我学习SLF4J和Spring.I log4j的得到比根记录等从SLF4J看到我们使用一个线如何使用Log4J的
private final Logger logger = LoggerFactory.getLogger(name.class);
我已经看到,这是获得根记录由eyerywhere默认。
这是如何得到根记录器?我错了吗?
如何获得log4j.xml文件中定义的其他记录器?
这是我的配置:
<?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>
“,这使得它更易于重构,在这种情况下,记录器名称将与提供的类的FQN相同(本例中为“com.example.foo.Bar”)“。我没有得到最后一行.. – beinghuman
我的意思是,如果Foo的Foo '是'com.example.foo.Bar',然后当你通过'... getLogger(Bar.class)'(哦,在我原来的答案错字,将解决该问题)记录器,返回的记录器的名称将是“com.example.foo.Bar”。对于“重构友好”语句:将FQN作为字符串传递给Class对象以获取记录器的一个区别是,如果重命名类或包,则在后一种情况下仍然会得到正确的记录器。 –
这帮了我一大堆,非常感谢这个详细的答案。 +1 – WillBD