再问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();
}
你参考这个试试