log4j.RollingFileAppender既不滚动也不加时间戳
log4j.RollingFileAppender neither rolling nor timestamping
新工作,新语言...java 这次。我正在努力将 log4j 集成到一个新产品中,并在遇到一些问题后设法使其能够正常工作,但问题仍然存在,我不确定如何解决这些问题。
将 log4j 1.2.17 与 log4j-extras 1.2.17 一起用于 RollingFileAppender。
问题
它没有滚动。我想在开发它时将它设置为每分钟滚动一次以检查一切是否正常,但我只得到它 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>
rollingAppender 的模式是错误的...
%%d{yyyy MM dd HH:mm:ss}
您需要删除第一个“%”
第二个问题,(我没用过TimeBasedRollingPolicy
)需要设置实际时间window作为参数吗?
前几天我回答了一个类似的 post,但不确定它是否正确。参见
新工作,新语言...java 这次。我正在努力将 log4j 集成到一个新产品中,并在遇到一些问题后设法使其能够正常工作,但问题仍然存在,我不确定如何解决这些问题。
将 log4j 1.2.17 与 log4j-extras 1.2.17 一起用于 RollingFileAppender。
问题
它没有滚动。我想在开发它时将它设置为每分钟滚动一次以检查一切是否正常,但我只得到它 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>
rollingAppender 的模式是错误的...
%%d{yyyy MM dd HH:mm:ss}
您需要删除第一个“%”
第二个问题,(我没用过TimeBasedRollingPolicy
)需要设置实际时间window作为参数吗?
前几天我回答了一个类似的 post,但不确定它是否正确。参见