Log4j中的RollingFileAppender是指满足一定大小后重新生成新的日志文件,我实验后发现生成的文件名格式是XXX.log.i(XXX是日志的名字,i从1往上递增)。
    但是其中有个问题,自动生成的日志文件中XXX.log.MAX永远都是最初生成的那个日志,而XXX.log.1永远是刚生成的那个日志,也就是说日志的文件名在每生成一个新的文件后,所有的日志文件名都会改变一次!这是为什么啊?
    所以想请教下大神,或者是可以自定义生成的文件的名字,或者是让文件名字一旦生成就不再改变,谢谢!
Log4jRollingFileAppender

解决方案 »

  1.   

    用 DailyRollingFileAppender 吧,每天生成一个文件xxx.log.yyyy-MM-dd
      

  2.   

    另外,你这个需求,貌似有用,实际无用。因为他最多保留N个。如果你文件名一旦xxx.log.1就不会变,最后,你留下的回事xxx.log.999,以至于xxx.log.999999,甚至xxx.log.99999999999999999(当然,这个有点夸张),无论是程序的判断,还是对于用户来说,都没有意义。
      

  3.   

    上次处理不就是最新的?
    就是XXX.log.1啊
      

  4.   

    对用户是没有多大意义,现在我这里有个需求是定期对日志文件进行操作,所以需要固定文件名,以便知道上次处理到哪个文件了
    我是说,对你这个开发/运维人员来说也是没意义的。难道你以后期望看一堆这样的文件(而且,有可能是这个顺序)xxx.log.1000
    xxx.log.1001
    xxx.log.1002
    xxx.log.998
    xxx.log.999过几天,可能又变成xxx.log.10000
    xxx.log.10001
    xxx.log.10002
    xxx.log.9998
    xxx.log.9999而且,我说了,这样的代码log4j不但难写,而且根本没效率可言。同样对于你的定时任务来说一会儿处理998~1002,一会儿处理9998~10002,也是没什么优势的,相反使用我前面提到过的DailyRollingFileAppender(甚至理论上可以夸张到每秒钟一个文件)更加方便而且一目了然。
      

  5.   

    对用户是没有多大意义,现在我这里有个需求是定期对日志文件进行操作,所以需要固定文件名,以便知道上次处理到哪个文件了
    我是说,对你这个开发/运维人员来说也是没意义的。难道你以后期望看一堆这样的文件(而且,有可能是这个顺序)xxx.log.1000
    xxx.log.1001
    xxx.log.1002
    xxx.log.998
    xxx.log.999过几天,可能又变成xxx.log.10000
    xxx.log.10001
    xxx.log.10002
    xxx.log.9998
    xxx.log.9999而且,我说了,这样的代码log4j不但难写,而且根本没效率可言。同样对于你的定时任务来说一会儿处理998~1002,一会儿处理9998~10002,也是没什么优势的,相反使用我前面提到过的DailyRollingFileAppender(甚至理论上可以夸张到每秒钟一个文件)更加方便而且一目了然。
    嗯,你说的是极好的,我决定要采用的方法了,谢谢!