log4j.RollingFileAppender既不滚动也不加时间戳

时间:2015-04-17 12:05:32

标签: java log4j

新工作,新语言......这次java。我正在努力将log4j集成到一个新产品中,并且在遇到一些问题之后设法让它变得有效但问题仍然存在,我不知道如何解决这些问题。

对于RollingFileAppender使用log4j 1.2.17和log4j-extras 1.2.17。

问题

它没有滚动。我希望将它设置为每分钟滚动,同时开发它以检查一切是否正常,但我得到的就是logs / stuff.log。

LogTest.java

package logTest;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class LogTest {

   static Logger logger = LogManager.getLogger(LogTest.class);

   public static void main(String[] args) {
      DOMConfigurator.configure("log4j.xml");

      logger.trace("trace");
      logger.debug("debug");
      logger.info("info");
      logger.warn("warn");
      logger.error("error");
   }
}

的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{yyyy MM dd HH:mm:ss} %5p %c{1} - %m%n"/>
      </layout>
   </appender>

    <appender name="rollingAppender" class="org.apache.log4j.rolling.RollingFileAppender">
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="logs/stuff.%d{yyyy-MM_HH-mm}.gz"/>
        <param name="ActiveFileName" value="logs/stuff.log"/>
        </rollingPolicy>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy MM dd HH:mm:ss} %5p %c{1} - %m%n"/>
        </layout>
    </appender>
   <root>
      <level value="INFO"/>
      <appender-ref ref="consoleAppender"/>
      <appender-ref ref="rollingAppender"/>
   </root>
</log4j:configuration>

1 个答案:

答案 0 :(得分:1)

您的模式对于rollingAppender是错误的......

%%d{yyyy MM dd HH:mm:ss}

您需要删除第一个&#34;%&#34;

对于第二个问题,(我还没有使用TimeBasedRollingPolicy)你需要将实际时间窗口设置为参数吗?

我前几天回复了类似的帖子,但不确定它是否正确。见Log4j2 auto rollover after specified duration