log4j日志处理实战

前边博文介绍学习了log4j的基本功能及使用,接下来根据Log4j已有的实现方法结合实际需求进行二次开发,以更好的满足实际的需求。

Log4j概述

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

需求介绍

Log4j中有org.apache.log4j.FileAppender类,该类实现了将日志文件输出到文件,其有两个子类(更详尽的信息参看http://logging.apache.org/log4j/1.2/apidocs/): 
DailyRollingFileAppender:实现了根据时间对日志文件进行切割,主要的成员变量为

 
 
  1. private String datePattern = "'.'yyyy-MM-dd"; //按天切割日志文件

RollingFileAppender:实现了根据日志文件的大小对日志文件切割,而且还可以指定日志文件的个数,超过指定个数的日志文件将会被删除。主要是依靠成员变量:

 
 
  1. protected long maxFileSize = 10*1024*1024; //默认的日志文件大小
  2. protected int maxBackupIndex = 1; //默认的日志文件个数

这些成员变量信息都可以在Log4j的配置文件log4j.properties中重新指定新值。 
现在要做的就是将RollingFileAppender和DailyRollingFileAppender类的功能结合起来,保证DailyRollingFileAppender大框架不变的前提下支持maxBackupIndex参数,以及可以实现超过指定日志文件个数的日志文件被删除。

实现步骤

代码中主要使用了java.util包中的集合类和java.io包中的File类。 
1.在DailyRollingFileAppender类中添加maxBackupIndex属性; 
2.定义了日志文件的后缀是日期格式,如log1.log-2016-10-23-12,使用File类获取目录的日志文件; 
3.将文件按日期排序存储在Map集合中(相当于白名单),存储的个数为指定的maxBackupIndex个; 
4.遍历日志目录文件,使用集合的comtains方法依次判断是否是白名单中的,不属于的即就是距离现在最远的文件,则调用定义的delete方法实现删除多余的文件;

用到的知识点主要是以下几个,如下




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值