Sto imparando SLF4J e log4j in Spring.I hanno visto che eyerywhere stiamo utilizzando una lineaCome arrivare diversa logger principale da SLF4J utilizzando Log4J
private final Logger logger = LoggerFactory.getLogger(name.class);
ho visto che si tratta di ottenere logger root predefinito.
Come si ottiene il logger root? Mi sbaglio?
Come posso ottenere altri logger definiti nel file log4j.xml?
Questa è la mia configurazione:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</appender>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/log/spring-hib.log" />
<param name="MaxBackupIndex" value="100" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
</layout>
</appender>
<logger name="com.example.foo">
<level value="DEBUG"/>
<appender-ref ref="FooLogFile"/>
</logger>
<category name="org.hibernate">
<priority value="DEBUG" />
</category>
<category name="java.sql">
<priority value="debug" />
</category>
<root>
<priority value="INFO" />
<appender-ref ref="ASYNC" />
</root>
</log4j:configuration>
"che lo rendono più adatto al refactoring. In questo caso, il il nome del logger ottenuto sarà lo stesso del FQN della classe fornita ("com.example.foo.Bar" in questo caso) ".Non ho ricevuto l'ultima riga .. – beinghuman
Ciò che intendo è, se FQN di' Foo 'è' com.example.foo.Bar', quindi quando si ottiene logger da '... getLogger (Bar.class)' (Oh typo nella mia risposta originale, lo aggiusterò), il nome del logger restituito sarà "com.example.foo.Bar". Per la dichiarazione di "refactoring-friendly": una differenza di passaggio nell'FQN come oggetto stringa rispetto a Class per ottenere il logger è, se la classe o il pacchetto viene rinominato, si otterrà comunque il logger corretto in quest'ultimo caso. –
Questo mi ha aiutato un sacco, grazie mille per questa risposta dettagliata. +1 – WillBD