[logback-dev] [JIRA] (LOGBACK-1429) MarkerFactory.getMarkert(..) doubles logger root, creates extra logger congext

QOS.CH (JIRA) noreply-jira at qos.ch
Thu Oct 11 10:18:00 CEST 2018


Máté Kovács created LOGBACK-1429:
------------------------------------

             Summary: MarkerFactory.getMarkert(..) doubles logger root, creates extra logger congext
                 Key: LOGBACK-1429
                 URL: https://jira.qos.ch/browse/LOGBACK-1429
             Project: logback
          Issue Type: Bug
          Components: logback-classic, logback-core
    Affects Versions: 1.3.0-alpha4
         Environment: uname -a
Linux mate-Latitude-5580 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)


Command line running the code is:

/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -javaagent:/home/mate/work/idea-IC-181.5281.24/lib/idea_rt.jar=45441:/home/mate/work/idea-IC-181.5281.24/bin -Dfile.encoding=UTF-8 -classpath /home/mate/work/trials/doubleLoggerRoot/out/production/doubleLoggerRoot:/home/mate/.m2/repository/ch/qos/logback/logback-classic/1.3.0-alpha4/logback-classic-1.3.0-alpha4.jar:/home/mate/.m2/repository/ch/qos/logback/logback-core/1.3.0-alpha4/logback-core-1.3.0-alpha4.jar:/home/mate/.m2/repository/org/slf4j/slf4j-api/1.8.0-beta1/slf4j-api-1.8.0-beta1.jar:/home/mate/.m2/repository/com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar:/home/mate/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar hu.alerant.Main

 
            Reporter: Máté Kovács
            Assignee: Logback dev list
            Priority: Critical


Calling MarkerFactory.getMarker("any marker") doubles the logger root, and the logger context. If you want to obtain loggers created before the marker using the factory, you will get new instances. 

 

Here is an example code: 
{code:java}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

public class Main {

 public static void main(String[] args) {

 Logger l1 = LoggerFactory.getLogger(Main.class);
 Logger l2 = LoggerFactory.getLogger(Main.class);
 if(l1==l2) {
   System.out.println("The first two loggers are the same");
 }

 Marker newMarker = MarkerFactory.getMarker("NewMarker");
 Logger l3 = LoggerFactory.getLogger(Main.class);
 if(l1==l3) {
   System.out.println("l1==l3");
 } else {
   System.out.println("l1!=l3");
 }
 }
}{code}
Here is the output on my machine:
{noformat}
The first two loggers are the same
l1!=l3{noformat}
The above code proves that you can obtain the same logger from the factory multiple times. However, after you instantiate a marker using the factory, you will get new instances instead of the old ones.

 



--
This message was sent by Atlassian JIRA
(v7.3.1#73012)


More information about the logback-dev mailing list