现在我们正在为我们的应用程序使用自定义的记录器方法,但现在我们有一个独立的代码,我们需要将其写入单独的日志文件。我们对log4j一无所知。我只是想知道在哪里更改属性,以便我不会打扰现有的记录器应用程序,以及我们将日志写入新的日志文件。
答案 0 :(得分:1)
首先定义一个文件追加器:
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=/mylogfile.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
然后指向你的包使用这个appender:
log4j.logger.mypackage=LOGFILE
log4j.additivity.mypackage=false
如果您不希望包继承全局appender,则最后一行很重要。这样做会导致mypackage的日志消息也打印在默认的appender上。
答案 1 :(得分:1)
在log4j中,您可以根据pacakge名称将日志条目定向到单独的文件。
log4j.logger.your.package1 = LOG,STDOUT
log4j.additivity.your.package1 = false
log4j.logger.your.package2 = DEBUG,STDOUT
log4j.additivity.your.package2 = false
答案 2 :(得分:1)
我使用XML配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="logfile" class="org.apache.log4j.FileAppender">
<param name="file" value="app.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-%5p(%F:%L)-%m%n"/>
</layout>
</appender>
<appender name="myLogfile" class="org.apache.log4j.FileAppender">
<param name="file" value="myFile.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-%5p(%F:%L)-%m%n"/>
</layout>
</appender>
<logger name="org.myApp">
<level value="INFO"/>
<appender-ref ref="myLogfile" />
</logger>
<root>
<level value="ERROR" />
<appender-ref ref="logfile" />
</root>
</log4j:configuration>
答案 3 :(得分:0)
只需使用FileAppender并在构造函数中指定新文件名。