由于我不会进入的原因,我被迫以编程方式配置log4j appender.
我想使用RollingFileAppender,以便我可以控制保留的最大文件数.
此外,我想将此appender设置为使用TimeBasedRollingPolicy,因为它将自动处理压缩滚动文件.
问题是我看不到通过代码设置此方法的方法.通常通过属性文件设置RollingFileAppender时,您将拥有:
log4j.appender.LOGFILE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
Run Code Online (Sandbox Code Playgroud)
必须有一种方法来设置这个....?任何人都可以解决一些问题,挖掘javadoc和类的方法的基本蚀 - 反射没有揭示解决方案:(
以下是我如何覆盖log4j.xml文件以将新文件名设置为名为"TheLoggerName"的记录器,其RollingFileAppender名为"TheAppenderName".您可以将解决方案基于此.
import org.apache.log4j.Logger;
import org.apache.log4j.rolling.RollingFileAppender;
import org.apache.log4j.rolling.TimeBasedRollingPolicy;
...
private static void afunction(String pTheNewFileName) {
Logger logger = Logger.getLogger("TheLoggerName");
RollingFileAppender rfappender = (RollingFileAppender) logger.getAppender("TheAppenderName");
TimeBasedRollingPolicy timeBasedRollingPolicy = (TimeBasedRollingPolicy) rfappender.getRollingPolicy();
timeBasedRollingPolicy.setFileNamePattern("newfilename%d{yyyy-MM}");
timeBasedRollingPolicy.activateOptions();
rfappender.activateOptions();
}
Run Code Online (Sandbox Code Playgroud)
您可能需要 log4j 配套/附加组件才能使用rolling.RollingFileAppender。
http://logging.apache.org/log4j/companions/index.html
编辑:
以下是可让您设置滚动策略的 api 参考。
http://logging.apache.org/log4j/companions/apidocs/org/apache/log4j/rolling/RollingFileAppender.html