日期:2014-05-20  浏览次数:20739 次

再问log4j的问题,关于log文件名的更改!
我的目的是希望在程序中动态的更改log的文件名。
配置文件一定是要有的,这样用户可以配置log输出的路径。
第一,我先用了FileAppender这个类
配置文件:
log4j.appender.file   =   org.apache.log4j.FileAppender
log4j.appender.file.Threshold   =   info
log4j.appender.file.File   =   c:/tmp/MyTest.log
log4j.appender.file.layout   =   org.apache.log4j.PatternLayout  
log4j.appender.file.layout.ConversionPattern   =%m%n

java代码:
URL   url   =     ClassLoader.getSystemResource(getLog4JPropertyFile());
PropertyConfigurator.configure(url);
FileAppender   appender   =   (FileAppender)(Logger.getRootLogger().getAppender( "file "));
String   strFileName   =   appender.getFile()   +   ".XXXX ";
appender.setFile(strFileName);

但是程序执行后,log的文件名不能被更改
请教!

第二,我先用了DailyRollingFileAppender这个类
配置文件:
log4j.appender.file   =   org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Threshold   =   info
log4j.appender.file.File   =   c:/tmp/MyTest.log
log4j.appender.file.DatePattern   =   '. 'yyyy-MM-dd  
log4j.appender.file.layout   =   org.apache.log4j.PatternLayout  
log4j.appender.file.layout.ConversionPattern   =%m%n

java代码:
URL   url   =     ClassLoader.getSystemResource(getLog4JPropertyFile());
PropertyConfigurator.configure(url);
DailyRollingFileAppender   appender   =   (DailyRollingFileAppender)(Logger.getRootLogger().getAppender( "file "));
String   strFileName   =   appender.getFile()   +   ".XXXX ";
appender.setFile(strFileName);

文件名能被更改为MyTest.log.XXXX,
但是,执行的时候却报这样的错误:
log4j:ERROR   Failed   to   rename   [c:/tmp/MyTest.log.XXXX]   to   [c:/tmp/MyTest.log.2007.05.10]
而且还捕捉不到这个error,
请教,各位达人!

------解决方案--------------------
Appender appender = LogManager.getLoggerRepository().getRootLogger().getAppender( "A1 ");
if ( appender instanceof FileAppender ) {
FileAppender fileAppender = (FileAppender)appender;
fileAppender.setFile( "xxxx ");
fileAppender.activateOptions();
}
你参考这个试试