Log4j debug到文件-信息到控制台[英] Log4j debug to file - Info to console

本文是小编为大家收集整理的关于Log4j debug到文件-信息到控制台的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述


我正在使用log4j进行日志.
我有一个要打印到控制台的log.info级别的课程,
并打印到某些文件log.info + log.debug级别(同一类).

我尝试设置log4j.xml如下:

<!--appender to parser file-->
<appender name="parserFile" class="org.apache.log4j.FileAppender">
    <param name="File" value="/var/log/java/parser/parser.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{E MMM dd HH:mm:ss} %c : %m%n" />
    </layout>
</appender> 

 <!--appender to the stdout-->
<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>


<logger name="parser.ParserMainJava">
    <level value="debug" />
    <appender-ref ref="parserFile" />
</logger>

<logger name="parser.ParserMainJava">
    <level value="info" />
    <appender-ref ref="console" />
</logger>

这是我的配置,但我不能使用具有相同包装名称的2个记录器.
有什么建议 ?
谢谢,
或.

推荐答案

只需定义带有调试级别的" parser.parsermainjava"的一个记录器,然后将以下参数添加到您的控制台Appender定义:

<param name="Threshold" value="INFO"/>

其他推荐答案

在我的情况下,我需要调整我的appenderref.将参数元素添加到consoleappender不起作用.该元素内存很好.

<Root level="debug">
   <AppenderRef ref="FileAppender" />
   <AppenderRef ref="ConsoleAppender" level="info"/>
</Root>

本文地址:https://www.itbaoku.cn/post/1575045.html

问题描述


I'm using log4j for logs.
I have a class that i want to print to the console only log.info level,
And print to some file log.info + log.debug levels (The same class).

I tried to setup the log4j.xml as follows :

<!--appender to parser file-->
<appender name="parserFile" class="org.apache.log4j.FileAppender">
    <param name="File" value="/var/log/java/parser/parser.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{E MMM dd HH:mm:ss} %c : %m%n" />
    </layout>
</appender> 

 <!--appender to the stdout-->
<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>


<logger name="parser.ParserMainJava">
    <level value="debug" />
    <appender-ref ref="parserFile" />
</logger>

<logger name="parser.ParserMainJava">
    <level value="info" />
    <appender-ref ref="console" />
</logger>

This is my configuration but I can't use 2 loggers with the same package name.
Any suggestions ?
Thanks,
Or.

推荐答案

Just define one logger for "parser.ParserMainJava" with debug level, and add the following parameter to your console appender definition:

<param name="Threshold" value="INFO"/>

其他推荐答案

In my case I needed to adjust my AppenderRef. Adding the param element to the ConsoleAppender did not work. This element inside Loggers is good.

<Root level="debug">
   <AppenderRef ref="FileAppender" />
   <AppenderRef ref="ConsoleAppender" level="info"/>
</Root>