fileappender rolloverfileappender rollover
Hi all!
I'm getting started with log4j programming and i have my first doubt.
I want a logger size based triggering policy and time based rolling policyso i'm using SizeBasedTriggeringPolicy and TimeBasedRollingPolicy in thefollowing way:
Logger root = Logger.getRootLogger();
root.addAppender(new ConsoleAppender(new PatternLayout()));
PatternLayout layout = new PatternLayout("%c{1} - %m%n");
RollingFileAppender = new RollingFileAppender();
.setLayout(layout);
TimeBasedRollingPolicy tbrp = new TimeBasedRollingPolicy();
SizeBasedTriggeringPolicy sbtp = new SizeBasedTriggeringPolicy();
tbrp.setActiveFileName("my_log");
tbrp.setFileNamePattern("my_log_%d{yyyy-MM-dd_HH_mm_ss}");
sbtp.setMaxFileSize(100);
.setRollingPolicy(tbrp);
.setTriggeringPolicy(sbtp);
.activateOptions();
root.addAppender();
for (int i = 0; i < 200; i++) {
try{
Thread.sleep(1000);
}catch(Exception e){}
if (i > 10) {
logger.debug("Hello " + i);
} else if (i > 100) {
logger.debug("Hello " + i);
}
}
An i get the following error when max size is reached:
The date pattern is [yyyy-MM-dd_HH_mm_ss] from file name pattern[my_log_%d{yy
-MM-dd_HH_mm_ss}].
Rollover every second.
getActiveLogFileName called
Active log file name: my_log
Hello 11
Hello 12
Hello 13
Hello 14
About to rollover
rollover called
compressionMode: 0
activeFileName: my_log
currentFileName: null
Exception in thread "main" java.lang.NullPointerException
at java.io.File.<init>(File.java:180)
at org.apache.log4j.rolling.helpers.Util.rename(Util.java:68)
at org.apache.log4j.rolling.TimeBasedRollingPolicy.rollover(TimeBasedR
lingPolicy.java:175)
at org.apache.log4j.rolling.RollingFileAppender.rollover(RollingFileAp
nder.java:124)
at org.apache.log4j.rolling.RollingFileAppender.subAppend(RollingFileA
ender.java:153)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:181)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:27
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppende
(AppenderAttachableImpl.java:100)
at org.apache.log4j.Category.callAppenders(Category.java:253)
at org.apache.log4j.Category.forcedLog(Category.java:464)
at org.apache.log4j.Category.debug(Category.java:317)
at com.foo.Pruebas_log4j.main(Pruebas_log4j.java:101)
I could see TimeBasedRollingPolicy 'changes' the logfile name in methodisTriggeringEvent but only sizebased triggering event method is invoked asis the only triggering policy configured for RollingFileAppender.
Am i wrong or may i overwrite timebasedrollingpolicy to force the change ofthe logfile name when rollover() is invoked?
Thanks for all
_________________________________________________________________
Add photos to your e-mail with MSN 8. Get 2 months FREE*.?page=features/featuredemail
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-32112-1.html
你牛
乱来就打沉他
建造年代早就是老旧军舰