Log4j在日志文件中记录两次

时间:2016-12-09 06:46:13

标签: java log4j

这是我的log4j.xml

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
      <appender name="mylog" class="org.apache.log4j.DailyRollingFileAppender">
       <param name="File" value="myLogfile.log" />
       <param name="DatePattern" value="'.'yyyy-MM-dd" />
       <param name="append" value="true"/>
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>          
       </layout>
    </appender>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
        <logger name="com.mypackage1">
        <level value="DEBUG" />
        <appender-ref ref="mylog" />
        <appender-ref ref="console" />
    </logger>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="console" />
    </root> 

</log4j:configuration>

在myLogfile.log文件中,我从“com.mypackage1”两次获取日志。

请帮忙解决问题

1 个答案:

答案 0 :(得分:-1)

如果您将控制台输出重定向到shell中的相同日志文件,就像您在评论中提到的那样,那么您的日志文件将具有重复的条目。一种解决方案是在程序中使用log4j config以下,并将控制台输出重定向到另一个文件 - 例如console.out,这将使您的日志和标准分开。如果你必须在同一个文件中输出std,那么将std重定向到同一个文件。

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
      <appender name="mylog" class="org.apache.log4j.DailyRollingFileAppender">
       <param name="File" value="myLogfile.log" />
       <param name="DatePattern" value="'.'yyyy-MM-dd" />
       <param name="append" value="true"/>
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>          
       </layout>
    </appender>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <logger name="com.mypackage1">
        <level value="DEBUG" />
        <appender-ref ref="mylog" />
    <!-- <appender-ref ref="console" />  -->    
    </logger>

    <root>
        <level value="DEBUG" />
    <!--  <appender-ref ref="console" />  -->
          <appender-ref ref="myLog" />
    </root> 

</log4j:configuration>