文档章节

DailyRollingFileAppender的使用

让爱搁浅
 让爱搁浅
发布于 2015/08/26 17:19
字数 2137
阅读 20
收藏 0

DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件。

如果您不熟悉Log4J,建议阅读一下 使用Log4j进行日志记录

我们可以按下面的方式配置DailyRollingFileAppender:

log4j.rootCategory=INFO,file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File=run.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=INFO
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%c %x - %m%n   

在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

  • '.'yyyy-MM,对应monthly(每月)

  • '.'yyyy-ww,对应weekly(每周)

  • '.'yyyy-MM-dd,对应daily(每天)

  • '.'yyyy-MM-dd-a,对应half-daily(每半天)

  • '.'yyyy-MM-dd-HH,对应hourly(每小时)

  • '.'yyyy-MM-dd-HH-mm,对应minutely(每分钟)

DatePattern中不用处理的文字要放到单引号(')中,如上面的(.)。如果您对此有疑问可以查阅SimpleDateFormat的文档。DailyRollingFileAppender中使用这个类来处理DatePattern。

DatePattern格式化之后的文本作为文件名字的后缀。DailyRollingFileAppender不支持格式化之后的文本作为文件名字的前缀。

DailyRollingFileAppender在每一个日志事件(LoggingEvent)附加(append)之前检查是否需要附加。也就是说如果在一个滚动区间中没有任何日志记录,那么这个区间的日志记录文件就不会形成。

 

在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。(这里只说明properties文件) 

1、配置根Logger


      其语法为: 
      log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
      level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName:就是指定日志信息输出到哪个地方(这个appenderName其实就是你自己定义的appender的名称)。您可以同时指定多个输出目的地。 
     例如:log4j.rootLogger=info,A1,B2,C3 

2、配置日志信息输出目的地


      其语法为: 
      log4j.appender.appenderName = fully.qualified.name.of.appender.class  //
      "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个: 

          1.org.apache.log4j.ConsoleAppender(控制台) 
          2.org.apache.log4j.FileAppender(文件) 
          3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) 
          4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 
          5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

             1.ConsoleAppender选项 
                    Threshold=WARN:指定日志消息的输出最低层次。 
                    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 
                    Target=System.err:默认情况下是:System.out,指定输出控制台 
              2.FileAppender 选项 
                    Threshold=WARN:指定日志消息的输出最低层次。 
                    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 
                    File=mylog.txt:指定消息输出到mylog.txt文件。 
                    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 
            3.DailyRollingFileAppender 选项 
                    Threshold=WARN:指定日志消息的输出最低层次。 
                    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 
                    File=mylog.txt:指定消息输出到mylog.txt文件。 
                    Append=false:默认值是true,即以追加的方式将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 
                    DatePattern=''.''yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下: 
                    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: 每分钟 
            4.RollingFileAppender 选项 
                    Threshold=WARN:指定日志消息的输出最低层次。 
                    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。 
                    File=mylog.txt:指定消息输出到mylog.txt文件。 
                    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 
                    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。 
                    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。 


注意:log4j支持按天输出日志文件,新创建的文件并不是yyyyMMdd形式的,过了当有新的日志文件生成时,上次的日志文件将以yyyyMMdd重命名

3、配置日志信息的格式


        其语法为: 
  1). log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
              "fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个: 
           1.org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
         2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
         3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
         4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 
                   1.HTMLLayout 选项 
                      LocationInfo=true:默认值是false,输出java文件名称和行号 
                      Title=my app file: 默认值是 Log4J Log Messages. 
                   2.PatternLayout 选项 
                      ConversionPattern=%m%n :指定怎样格式化指定的消息。 
                   3.XMLLayout  选项 
                      LocationInfo=true:默认值是false,输出java文件和行号 
        2). log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n
           这里需要说明的就是日志信息格式中几个符号所代表的含义: 
           -X号: X信息输出时左对齐; 
                   %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL, 
                   %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 
                   %r: 输出自应用启动到输出该log信息耗费的毫秒数 
                   %c: 输出日志信息所属的类目,通常就是所在类的全名 
                   %t: 输出产生该日志事件的线程名 
                   %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) 
                   %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。 
                   %%: 输出一个"%"字符 
                   %F: 输出日志消息产生时所在的文件名称 
                   %L: 输出代码中的行号 
                   %m: 输出代码中指定的消息,产生的日志具体信息 
                   %n: 输出一个回车换行符,Windows平台为" 
",Unix平台为"
"输出日志信息换行 
            可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如: 
                     1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。 
                     2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。 
                     3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。 
                     4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。


4、日志等级

日志记录器(Logger)的行为是分等级的。如下表所示:

分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。


本文转载自:http://blog.csdn.net/zhoulenihao/article/details/24995397

让爱搁浅
粉丝 3
博文 18
码字总数 2148
作品 0
成都
程序员
私信 提问
日志文件管理

如果您使用的是Log4j,且采用的RollingFileAppender方式, 通过设置maxBackupIndex属性来指定要保留的日志文件数的最大值可以间接实现删除N天前的日志文件。 2. 如果您使用的是Log4j,且采用的D...

langtu329
2016/06/27
32
0
log4j:WARN No such property [maxBackupIndex] in or

log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. log4j:WARN No such property [maxFileSize] in org.apache.log4j.DailyRollingFileAppender......

五大三粗
2015/09/23
1K
0
log4cxx.properties

#lib为appenderName1 log4j.logger.adserver=debug, lib log4j.appender.lib=org.apache.log4j.DailyRollingFileAppender log4j.appender.lib.File=./log/adserver.log log4j.appender.lib.l......

zhegaozhouji
2016/04/19
0
0
怎样使日志文件名按当天日期加指定部分组成?

使用log4j的DailyRollingFileAppender,产生的日志第一天是没有日期的!

鱼北子
2011/04/18
850
3
Tomcat log 配置解决catalina.out文件过大问题

Tomcat log配置解决catalina.out文件过大问题 配置Tomcat7.0.55下使用Log4j接管catalina.out日志文件生成方式,按天存放,解决catalina.out日志文件过大问题。 1. 准备jar包: log4j-1.2.17...

huazhixu123
2017/09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用原生js对表格排序

本文转载于:专业的前端网站➸用原生js对表格排序 阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。 题目的大意是有一个表格,如代码所示 <table>...

前端老手
20分钟前
3
0
IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

HTML5有一些新的表单元素:<datalist>、<keygen>、<output>。不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素。 1 <datalist>元素 ...

老码农的一亩三分地
22分钟前
3
0
【朝花夕拾】Android自定义View篇之(一)View绘制流程

https://www.cnblogs.com/andy-songwei/p/10955062.html

shzwork
24分钟前
4
0
Qt编写自定义控件70-扁平化flatui

一、前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产...

飞扬青云
33分钟前
2
0
教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部