改变log4j日志备份的后缀名

我们知道使用log4j可以设置日志文件达到指定容量后就会产生备份文件,该备份文件格式为 fileName+"."+number,实际应用中需要统一的后缀名,怎么样才能做到? 比如说 现在使用log4j-1.2.4.jar log.log 产生的备份是log.log.1,log.log.2,log.log.3...,但我们期望的结果是log1.log,log2.log,log3.log... 先下载log4j-1.2.4的源码,找到 RollingFileAppender.java-->rollOver, 详细如下

 

 

public  void rollOver() {

                         File target;   

                         File file;

                         LogLog.debug("rolling over count=" + ((CountingQuietWriter) qw).getCount());

                         LogLog.debug("maxBackupIndex="+maxBackupIndex);

                         // If maxBackups <= 0, then there is no file renaming to be done.

                         if (maxBackupIndex > 0) {

                        // Delete the oldest file, to keep Windows happy.

                                     int position = fileName.lastIndexOf("."); 

                                     if (position != -1) {   

                                                 String nameOne = fileName.substring(0, position);  

                                                 String nameTwo = fileName.substring(position + 1, fileName.length());  

                                                 String mulName = nameOne + maxBackupIndex + "." + nameTwo;   

                                                 file = new File(nameOne + maxBackupIndex + "." + nameTwo);   

                                     } else

                                                 file = new File(fileName + '.' + maxBackupIndex);

                                     if (file.exists())   

                                                 file.delete();

                         }

               // Map {(maxBackupIndex - 1), ..., 2, 1} to {maxBackupIndex, ..., 3, //

                        // 2}

                         for (int i = maxBackupIndex - 1; i >= 1; i--) { 

                                     position = fileName.lastIndexOf(".");  

                                     if (position != -1) {   

                                                 String nameOne = fileName.substring(0, position);   

                                                 String nameTwo = fileName.substring(position + 1, fileName.length()); 

                                                 String mulName = nameOne + i + "." + nameTwo; 

                                                 file = new File(mulName );   

                                                 if (file.exists()) {   

                                                             mulName = nameOne + (i + 1)+"."+nameTwo;

                                                             target = new File( mulName );

                                                             LogLog.debug("Renaming file " + file + " to " + target);

                                                             file.renameTo(target);    

                                                 }

                                     }else {

                                                 file = new File(fileName + "." + i);

                                                 if (file.exists()) {

                                                             target = new File(fileName + '.' + (i + 1));

                                                             LogLog.debug("Renaming file " + file + " to " + target);

                                                             file.renameTo(target); 

                                                 }

                                     }  

                         }  

             // Rename fileName to fileName.1

                         position = fileName.lastIndexOf(".");  

                         if (position != -1) {  

                                     String nameOne = fileName.substring(0, position);    

                                     String nameTwo = fileName.substring(position + 1, fileName.length()); 

                                     String mulName = nameOne + "1." + nameTwo;  

                                     target = new File( mulName );   

                         } else

                                     target = new File(fileName + "." + 1);

                         this.closeFile(); // keep windows happy.

                         file = new File(fileName);  

                         LogLog.debug("Renaming file " + file + " to " + target);

                         file.renameTo(target);  

                         

                         try {    

                        // This will also close the file. This is OK since multiple

                        // close operations are safe.

                                     this.setFile(fileName, false, bufferedIO, bufferSize);    

                         } catch(IOException e) {    

                                     LogLog.error("setFile("+fileName+", false) call failed.", e);

                         }

             }

将log4j-1.2.4.jar解压,然后拷贝编译后新的RollingFileAppender.class 覆盖,再用jar -cvf log4j-1.2.4.jar 重新打包

log4j.appender.Client=org.apache.log4j.RollingFileAppender log4j.appender.Client.MaxFileSize=5KB log4j.appender.Client.MaxBackupIndex=10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值