zoukankan      html  css  js  c++  java
  • log4j配置参数详解——按日志文件大小、日期切分日志文件

     项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式。下面就总结一下log4j常用的配置参数以及切分日志的不同方式。

    一、基本配置解析

         常用配置1:

    [java] view plain copy
     
    1. #日志级别,还可以log4j.rootLogger=INFO,file2,file3 指定file2、3的输出文件  
    2. log4j.rootLogger=info,exception,thread    
    3.   
    4. #info  
    5.     #每一天产生1个日志文件  
    6.     log4j.appender.info=org.apache.log4j.DailyRollingFileAppender   
    7.     #定义日志存放路径  
    8.     log4j.appender.info.File=/usr/tomcat_logs/mailSystem_info.log  
    9.     #日志文件是否追加  
    10.     log4j.appender.info.Append=true  
    11.     #定义的时间格式,如果时间定义到分钟(mm)就是每分钟生成一个日志文件,而这里定义的这个格式就是日志名后缀  
    12.     #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH-mm  每分钟  
    13.     #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH    每小时  
    14.     #log4j.appender.file3.DatePattern='_' yyyy-MM-dd    每天  
    15.     #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-a  每半天  
    16.       
    17.     #日志输出级别  
    18.     log4j.appender.info.Threshold=INFO  
    19.     #日志编码  
    20.     #log4j.appender.file3.Encoding=UTF-8   
    21.     #日志中输出的日志的格式  
    22.     log4j.appender.info.layout=org.apache.log4j.PatternLayout  
    23.     #定义的日志格式  
    24.     log4j.appender.info.layout.ConversionPattern=%t %d %p [%c] - %m%n  
         常用配置2:
    [java] view plain copy
     
    1. #debug  
    2.     log4j.appender.debug=org.apache.log4j.RollingFileAppender  
    3.     log4j.appender.debug.File=/usr/tomcat_logs/mailSystem_debug.log  
    4.     #设置日志文件的大小  
    5.     log4j.appender.debug.MaxFileSize=100M  
    6.     #保存10个备份文件  
    7.     log4j.appender.debug.MaxBackupIndex=10  
    8.     log4j.appender.debug.Append=true  
    9.     log4j.appender.debug.Threshold=DEBUG  
    10.     log4j.appender.debug.layout=org.apache.log4j.PatternLayout  
    11.     log4j.appender.debug.layout.ConversionPattern=%t %d %p [%c] - %m%n  
    12.       
         配置1采用DailyRollingFileAppender类,可定义日志按照log4j给定的参数值进行配置,配置2使用RollingFileAppender。两者都为log4j配置的核心类。在下进行详细介绍。

    二、配置核心类解析

    CLASS1:DailyRollingFileAppender

      在配置1中使用到DailyRollingFileAppender,该类继承与FileAppender,so that the underlying file is rolled over at a user chosen frequency.

    The rolling schedule is specified by the “DatePattern” option。使用这些rolling schedule 需要注意一个前缀问题。例如if the “File” option is set to   “/foo/bar.log” and the “DatePattern” set to '.'yyyy-MM-dd ,则到了midnight,the logging file /foo/bar.log will be copied to   "/foo/bar.log.2017-01-01",也就是在bar.log文件后添加 ".yyyy-MM-dd"后缀。It is possible to specify monthly, weekly,half-daily, daily,hourly, or minutely rollover schedules.

    总共有:

    切分类型

    切分前

    切分后

    按月'.'yyyy-MM

    /foo/bar.log

    /foo/bar.log.2002-05

    按周 '.'yyyy-ww

    /foo/bar.log

    /foo/bar.log.2002-23

    按天 '.'yyyy-MM-dd

    /foo/bar.log

    /foo/bar.log.2002-03-08 default

    半天 '.'yyyy-MM-dd-a

    /foo/bar.log

    /foo/bar.log.2002-03-09-AM

    按时 '.'yyyy-MM-dd-HH

    /foo/bar.log

    /foo/bar.log.2002-03-09-10

    按分 '.'yyyy-MM-dd-HH-mm

    /foo/bar.log

    /foo/bar.log.2001-03-09-10-22

    [java] view plain copy
     
    1. public DailyRollingFileAppender (Layout layout, String filename,  
    2.                String datePattern) throws IOException {  
    3.    super(layout, filename, true);  
    4.    this.datePattern = datePattern;  
    5.    activateOptions();  
    6.  }  
      这些参数策略会传入到DailyRollingFileAppender的初始化方法中,创建一个DailyRollingFileAppender对象。

    CLASS2:RollingFileAppender

      配置2中使用到另一个类RollingFileAppender,这个类也继承子FileAppender,用于按照一定的size文件大小,back up 日志文件。

    这个类中起关键作用的两个参数maxFileSize和maxBackupIndex,用于确定每个日志文件的size大小和备份个数。默认分别为10MB和1.按照设置的index大小,会默认将文件copy to .1,.2等文件后缀进行备份。

    CLASS3: PatternLayout

      在两个配置中,均使用PatternLayout和ConventionPattern类,PatternLayout主要用于日志输出相关,ConventionPattern用于定义日志文件的输出格式。其中ConventionPattern支持多种类型的日志输出,如线程信息、类信息,均已%打头进行配置,详情如下:

    %c 输出日志信息所属的类的全名,例如%c{2},对于com.max.spring.demo,便会输出spring.demo两级类信息。
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
    %f 输出日志信息所属的类的类名
    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    %m 输出代码中指定的信息,如log(message)中的message
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    %t 输出产生该日志事件的线程名

    三、切分效果

    按照日期切分日志:           按照文件大小切分日志:

                    

    版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/Daybreak1209/article/details/54020497
  • 相关阅读:
    sublime text 3安装 package control 插件的方法
    mysql 库和表占用空间查询
    错误:编码GBK的不可映射字符
    新系统设置 github 私钥
    git 之忽略文件 gitignore 创建和使用规则
    DesiredCapabilities内容详解(摘)
    appium-python自动化之get_attribute笔记(摘)
    excel批量插入图片-方法(宏和纯手工操作)
    利用Python将多个excel文件合并为一个文件
    notePad++ 运行python
  • 原文地址:https://www.cnblogs.com/weixupeng/p/8608617.html
Copyright © 2011-2022 走看看