据悉Log4j已毕定时创立和删除日志的法子

作品版权由作者李晓晖和乐乎共有,若转发请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

Log4j作为常用的日志生成工具,其免除日志的国策却尤其星星。唯有在RollingFileAppender中得以由此设置马克斯(Max)FileSize和maxBackupIndex属性来指定要封存的日志文件大小以及个数,从而完毕机关清除。

 图片 1

然则实际上生育中,我们的真实性的急需日常是定时生成日志,然后保留近期几天的日志,历史日志须要登时清理。不过Log4j中的DailyRollingFileAppender这么些类却不带属性maxBackupIndex,maxFileSize等,所以无法透过向来配备已毕。

针对那种情景,一般方法是写一个定时删除日志的台本等,那里大家谈论一种通过持续FileAppender,重新落成DailyRollingFileAppender类,并且包蕴按时间顺序清理日志的功能。

2.具体贯彻

2.1代码达成

a.已毕自定义的日期类和文书过滤类,为拓展文件命名和寻找做准备。

 图片 2

图片 3

b.继承FileAppender类,定义好文件输出日期格式以及文件备份参数。

 图片 4

c.重写宗旨的RollOver函数。

图片 5

d.在RollOver函数中形成对备份数据的监测以及历史日志的删减。

图片 6

2.2布局完毕

 图片 7

3.Log4j各安插的意义

Log4j由多个基本点的机件构成:日志音信的优先级,日志新闻的出口目标地,日志新闻的出口格式。日志信息的先行级从高到低有ERROR、WARN、
INFO、DEBUG,分别用来指定那条日志音信的要害程度;日志音讯的输出目标地指定了日记将打印到控制台照旧文件中;而输出格式则决定了日志音信的呈现内容。Log4j协理三种配备文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。那里,大家任重先生而道远探索基于XML的安插形式。

3.1配置根logger

焦点语法是:

 图片 8

个中,level
是日记记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者你定义的级别。Log4j提出只行使多个级别,优
先级从高到低分别是ERROR、WARN、INFO、DEBUG。

此间,每一个appenderName均是上面要求配备的日志新闻的称谓。

骨子里例子:

log4j.rootLogger=INFO ,stdout, ROLLING_ERROR_FILE, ROLLING_INFO_FILE

图片 9

3.2陈设日志新闻输出目标地Appeder

Log4j中提供的Appender主要有以下两种:

org.apache.log4j.ConsoleAppender(控制台), 

org.apache.log4j.FileAppender(文件), 

org.apache.log4j.DailyRollingFileAppender(每一日爆发一个日记文件), 

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候发生一个新的文件), 

org.apache.log4j.WriterAppender(将日志音讯以流格式发送到任意指定的地点)

主旨语法为:

图片 10

骨子里例子:

log4j.appender.ROLLING_ERROR_FILE=org.apache.log4j.DailyRollingFileAppender

本着差距的Appender,它们的性质也有自然的歧异,那一个属性首若是对准日志文件的命名规则、保存路径、删除策略等有涉嫌。

3.2.1 ConsoleAppender的属性

Threshold=WARN:指定日志音讯的最低输出级别,默许为DEBUG。

ImmediateFlush=true:表示拥有音信都会被随即输出,设为false则不出口,默许值是true。

Target=System.err:默许值是System.out。

3.2.2 FileAppender的属性

Threshold=WARN:指定日志音讯的最低输出级别,默许为DEBUG。

ImmediateFlush=true:表示所有音讯都会被及时输出,设为false则不出口,默许值是true。

Append=false:true表示新闻增加到指定文件中,false则将音信覆盖指定的公文内容,默许值是true。

File=D:/logs/logging.log4j:指定音信输出到logging.log4j文件中。

3.2.3 DailyRollingFileAppender的属性

Threshold=WARN:指定日志消息的最低输出级别,默许为DEBUG。

ImmediateFlush=true:表示拥有音讯都会被当下输出,设为false则不出口,默许值是true。

Append=false:true表示音信扩大到指定文件中,false则将音信覆盖指定的公文内容,默认值是true。

File=D:/logs/logging.log4j:指定当前音讯输出到logging.log4j文件中。

DatePattern=’.’yyyy-MM:每月滚动四次日志文件,即每月暴发一个新的日志文件。当前月的日记文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。

别的,也得以指定按周、天、时、分等来滚动日志文件,对应的格式如下:

1)’.’yyyy-MM:每月

2)’.’yyyy-ww:每周

3)’.’yyyy-MM-dd:每天

4)’.’yyyy-MM-dd-a:天天四次

5)’.’yyyy-MM-dd-HH:每小时

6)’.’yyyy-MM-dd-HH-mm:每分钟

3.2.4 RollingFileAppender的属性

Threshold=WARN:指定日志信息的最低输出级别,默许为DEBUG。

ImmediateFlush=true:表示所有音讯都会被随即输出,设为false则不出口,默许值是true。

Append=false:true表示新闻扩大到指定文件中,false则将音讯覆盖指定的文书内容,默许值是true。

File=D:/logs/logging.log4j:指定新闻输出到logging.log4j文件中。

马克斯(Max)FileSize=100KB:后缀可以是KB, MB
或者GB。在日记文件到达该大时辰,将会自动滚动,即将原来的情节移到logging.log4j.1文件中。

马克斯BackupIndex=2:指定可以发生的滚动文件的最大数,例如,设为2则足以生出logging.log4j.1,logging.log4j.2三个滚动文件和一个logging.log4j文件。

3.3 配置日志音讯的格式(布局)layout

Log4j提供的layout有以下两种:

org.apache.log4j.HTMLLayout(以HTML表格格局布局), 

org.apache.log4j.PatternLayout(可以灵活地指定布局方式), 

org.apache.log4j.SimpleLayout(包蕴日志音讯的级别和音信字符串), 

org.apache.log4j.TTCCLayout(包涵日志产生的时刻、线程、系列等等音信)

Log4j采取类似C语言中的printf函数的打印格式格式化日志新闻,打印参数如下:
%m 输出代码中指定的音讯

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 

%r 输出自应用启动到输出该log音信成本的飞秒数 

%c 输出所属的类目,平时就是所在类的全名 

%t 输出发生该日记事件的线程名 

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 

%d
输出日志时间点的日子或时刻,默许格式为ISO8601,也得以在其后指定格式,比如:%d{yyy
MMM dd HH:mm:ss,SSS},输出接近:2002年7月18日 22:10:28,921 

%l
输出日志事件的发出地点,包涵类目名、暴发的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

着力语法为:

图片 11

骨子里例子:

log4j.appender.ROLLING_ERROR_FILE.layout=org.apache.log4j.PatternLayout

log4j.appender.ROLLING_ERROR_FILE.layout.ConversionPattern=[log] %d
-%-4r [%t] %c %x%n %-5p – %m [%l] %n

 

                           
—–欢迎转发,但保留版权,请于分明处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                         
         
即使您认为本文确实辅助了你,可以微信扫一扫,进行小额的打赏和鞭策,谢谢
^_^

                                                                                                                      
      图片 12