log4j日志处理实战

    xiaoxiao2021-03-25  156

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

    Log4j概述

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

    需求介绍

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

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

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

    protected long maxFileSize = 10*1024*1024; //默认的日志文件大小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方法实现删除多余的文件;

    用到的知识点主要是以下几个,如下 Log4j介绍: http://blog.csdn.net/ty_laurel/article/details/52894205 泛型: http://blog.csdn.net/ty_laurel/article/details/52945218 Map集合: http://blog.csdn.net/ty_laurel/article/details/52834438 代码地址: https://github.com/ty92/log4j-development

    转载请注明原文地址: https://ju.6miu.com/read-1733.html

    最新回复(0)