我的目的是希望在程序中动态的更改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%njava代码:
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%njava代码:
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,
请教,各位达人!

解决方案 »

  1.   

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

  2.   

    谢谢楼上的
    加了 
    fileAppender.activateOptions(); 
    以后就可以了