我想在单个appender上使用多个记录器。
假设我在我的项目中使用3个不同的库,有3个不同的记录器。
但是我想把这些库的所有日志都放在单个文件中。现在不行。
我查看了下面的stackoverflow问题,但我在Java中也做不到(这个问题已经回答了grails)
Using multiple loggers on a single appender
这是我的log4j.xml文件: -
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${log.file}" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<param name="MaxFileSize" value="50MB"/>
<param name="MaxBackupIndex" value="20"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender" >
<param name="BufferSize" value="500000"/>
<param name="Blocking" value="false"/>
<appender-ref ref="fileAppender"/>
</appender>
<logger name="ABCDEF" additivity="false">
<level value="INFO"/>
<appender-ref ref="fileAppender"/>
</logger>
<logger name="GHIJKLM" additivity="false">
<level value="INFO"/>
<appender-ref ref="ASYNC"/>
</logger>
<logger name="NOPQURST" additivity="false">
<level value="INFO"/>
<appender-ref ref="ASYNC"/>
</logger>
</log4j:configuration>
那么在Java中该怎么做?
注意: -
我无法转移到像slf4j这样的其他日志记录。
在辛克莱的评论之后: -
此问题解释了根记录器。我想为整个应用程序创建一个自定义appender,可供多个记录器使用。
编辑2
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<!-- The active file to log to -->
<param name="file" value="${log.file}" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<!-- Max File Size 50MB-->
<param name="MaxFileSize" value="50MB"/>
<!-- Keep 20 backup files -->
<param name="MaxBackupIndex" value="20"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The log message pattern -->
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender" >
<param name="BufferSize" value="500000"/>
<param name="Blocking" value="false"/>
<appender-ref ref="fileAppender"/>
</appender>
<appender name="customAppender" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="fileAppender" />
</appender>
<logger name="com.company.project" additivity="false">
<level value="INFO"/>
<appender-ref ref="customAppender"/>
</logger>
<logger name="org.jboss.netty" additivity="false">
<level value="INFO" />
<appender-ref ref="customAppender" />
</logger>
<root>
<priority value="INFO" />
<appender-ref ref="consoleAppender" />
</root>
</log4j:configuration>
我正在使用的文件...仍然与org.jboss.netty
相关的任何错误或异常都会进入out
文件而非日志文件。
更多帮助????