log4j的几个核心类
- Logger用于对日志记录行为的抽象,提供记录不同级别日志的接口
- Level对日志级别的抽象
- Appender是对记录日志形式的抽象
- Layout是对日志行格式的抽象
- LoggingEvent是对一次日志记录过程中所能取到信息的抽象
- LoggerRepository是Logger实例的容器
- ObjectRender是对日志实例的解析接口,它们主要提供了一种扩展支持
平时常用的两个Appender类
- DailyRollingFileAppender
- RollingFileAppender
DailyRollingFileAppender:按照日期格式切分
RollingFileAppender:按照文件大小切分
两个关键方法
分别看下代码
DailyRollingFileAppender代码
1 | /** |
RollingFileAppender代码
首先了解下在RollingFileAppender中定义了三个属性
1 | /** |
maxFileSize,maxBackupIndex属性的get set 以及在判断日志大小时需要用到的 qw
1 | public void setMaxBackupIndex(int maxBackups) { |
1 |
|
实现思路
现在知道了两个类是如何实现切分文件的了
然后在DailyRollingFileAppender类的基础上扩展,参考RollingFileAppender增加文件大小的判断。
将判断文件大小的逻辑加在subAppend方法中,当超过配置的size最大值时调用sizeRollOver()方法。
最终代码合并如下
1 | package com.iguozhe.wonhot.common.system; |
配置文件
1 |
|