【发布时间】:2014-09-18 00:02:07
【问题描述】:
是否可以将“调试”和“信息”输出写入控制台,而“信息”输出仅写入某个日志文件?例如,给定以下日志记录:
LOG.debug(fileContent);
LOG.info(fileLength);
对应的log4j.xml 是什么样的?
【问题讨论】:
标签: log4j
是否可以将“调试”和“信息”输出写入控制台,而“信息”输出仅写入某个日志文件?例如,给定以下日志记录:
LOG.debug(fileContent);
LOG.info(fileLength);
对应的log4j.xml 是什么样的?
【问题讨论】:
标签: log4j
好的,我现在知道了:
<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>
感谢您的帮助!
【讨论】:
这绝对是可能的。配置看起来像这样(不检查语法正确性):
<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 附加程序。信息消息转到otherAppender。
【讨论】:
转到this 页面查看一些示例。
就像在程序中添加两个不同的 appender 一样简单,一个 appender 用于您想要执行的每种类型的日志记录。
【讨论】:
使用 Eddie 的配置,我只能获得 MyClass 的“信息”输出。但我想要的是 MyClass 的“信息”输出到一个文件,而 MyClass 的“调试”输出到控制台。
【讨论】:
按照 rwwilden 的建议做,但删除这部分:
<logger name="com.mycompany.mypackage.MyClass">
<level value="info"/>
<appender-ref ref="otherAppender" />
</logger>
并在otherAppender下添加<param name="Threshold" value="INFO"/>。
【讨论】: