是否可以将“debug”和“info”输出写入控制台,而“info”输出只写入某个日志文件?例如,给定此日志记录:
LOG.debug(fileContent);
LOG.info(fileLength);
相应的log4j.xml
看起来像什么?
答案 0 :(得分:10)
好的,我现在知道了:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
...
</appender>
<appender name="otherAppender"
class="org.apache.log4j.FileAppender FileAppender">
<param name="Threshold" value="INFO"/>
...
</appender>
<root>
<priority value="debug" />
<appender-ref ref="console" />
<appender-ref ref="otherAppender" />
</root>
</log4j:configuration>
感谢您的帮助!
答案 1 :(得分:5)
这绝对是可能的。配置看起来像这样(没有检查语法正确性):
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
...
</appender>
<appender name="otherAppender"
class="org.apache.log4j.FileAppender FileAppender">
...
</appender>
<logger name="com.mycompany.mypackage.MyClass">
<level value="info"/>
<appender-ref ref="otherAppender" />
</logger>
<root>
<priority value="debug" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
所有调试和信息消息都转到console
appender。信息消息转到otherAppender
。
答案 2 :(得分:1)
转到this页面查看一些示例。
就像在程序中添加两个不同的appender一样简单,只需要为每种类型的日志记录添加一个appender。
答案 3 :(得分:0)
使用Eddie的配置,我只能获得MyClass的“info”输出。但我想要的是MyClass的“info”输出转到一个文件,MyClass的“debug”输出转到控制台。
答案 4 :(得分:0)
按照rwwilden的建议,但删除此部分:
<logger name="com.mycompany.mypackage.MyClass">
<level value="info"/>
<appender-ref ref="otherAppender" />
</logger>
并在otherAppender下添加<param name="Threshold" value="INFO"/>
。