【发布时间】:2011-02-15 08:44:42
【问题描述】:
我使用 log4j 并希望将某些 Logger 的输出路由到特定文件。
我已经有多个附加程序。现在,为了使调试更容易,我想告诉 log4j 由特定类(例如 foo.bar.Baz)生成的输出应该写入特定的日志文件。
这个可以吗?
【问题讨论】:
标签: java log4j logging appender
我使用 log4j 并希望将某些 Logger 的输出路由到特定文件。
我已经有多个附加程序。现在,为了使调试更容易,我想告诉 log4j 由特定类(例如 foo.bar.Baz)生成的输出应该写入特定的日志文件。
这个可以吗?
【问题讨论】:
标签: java log4j logging appender
一个例子:
log4j.rootLogger=ERROR, logfile
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.datePattern='-'dd'.log'
log4j.appender.logfile.File=log/radius-prod.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n
log4j.logger.foo.bar.Baz=DEBUG, myappender
log4j.additivity.foo.bar.Baz=false
log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.File=log/access-ext-dmz-prod.log
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n
【讨论】:
这是关于 XML 配置的答案,请注意,如果您不给文件附加程序 ConversionPattern,它将创建 0 字节文件并且不写入任何内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="bdfile" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false"/>
<param name="maxFileSize" value="1GB"/>
<param name="maxBackupIndex" value="2"/>
<param name="file" value="/tmp/bd.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<logger name="com.example.mypackage" additivity="false">
<level value="debug"/>
<appender-ref ref="bdfile"/>
</logger>
<root>
<priority value="info"/>
<appender-ref ref="bdfile"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
【讨论】:
<root> 中删除<appender-ref ref="bdfile"/> 至关重要 - 否则您将看到整个日志也复制到此文件中。
<logger>... 元素。将类或包指定为名称,将 appender 指定为文件 appender。