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

一、基本配置解析

常用配置1:

  1. #日志级别,还可以log4j.rootLogger=INFO,file2,file3 指定file2、3的输出文件
  2. log4j.rootLogger=info,exception,thread
  3. #info
  4. #每一天产生1个日志文件
  5. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
  6. #定义日志存放路径
  7. log4j.appender.info.File=/usr/tomcat_logs/mailSystem_info.log
  8. #日志文件是否追加
  9. log4j.appender.info.Append=true
  10. #定义的时间格式,如果时间定义到分钟(mm)就是每分钟生成一个日志文件,而这里定义的这个格式就是日志名后缀
  11. #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH-mm  每分钟
  12. #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH    每小时
  13. #log4j.appender.file3.DatePattern='_' yyyy-MM-dd    每天
  14. #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-a  每半天
  15. #日志输出级别
  16. log4j.appender.info.Threshold=INFO
  17. #日志编码
  18. #log4j.appender.file3.Encoding=UTF-8
  19. #日志中输出的日志的格式
  20. log4j.appender.info.layout=org.apache.log4j.PatternLayout
  21. #定义的日志格式
  22. log4j.appender.info.layout.ConversionPattern=%t %d %p [%c] - %m%n

常用配置2:

  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

配置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

  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

log4j配置参数详解——按日志文件大小、日期切分日志文件的更多相关文章

  1. zookeeper的配置参数详解(zoo.cfg)

    配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口,即对外服务端口,一般设置为2181吧. data ...

  2. [转帖]持久化journalctl日志清空命令查看配置参数详解

    持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...

  3. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  4. reids配置参数详解

    转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...

  5. nginx配置参数详解

    配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...

  6. Redis配置参数详解

    Redis配置参数详解 /********************************* GENERAL *********************************/ // 是否作为守护进 ...

  7. MHA配置参数详解 【转】

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  8. HAproxy 配置参数详解

    HAproxy 配置参数详解 /etc/haproxy/haproxy.cfg # 配置文件 ----------------------------------------------------- ...

  9. samba 配置参数详解

    samba 配置参数详解: 一.全局配置参数  workgroup = WORKGROUP说明:设定 Samba Server 所要加入的工作组或者域. server string = Samba S ...

随机推荐

  1. tableView优化方案

    最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...

  2. iOS 设备尺寸以及图标尺寸

    iPhone 4和iPod Touch 4有一个新的特性:在屏幕尺寸不变的前提下,分辨率提升一倍(320 x 480 => 640 x 960).苹果将这个特性命名为Retina. 用苹果的话讲 ...

  3. 解决springmvc 乱码的方法

    post乱码: 在web.xml添加post乱码filter: <filter> <filter-name>CharacterEncodingFilter</filter ...

  4. STM32 常用词汇释义

    1.AF——Alternate function   复用功能: 2.NVIC——Nested Vectored Interrupt Controller   内嵌向量中断控制器 3.ISER[8]— ...

  5. Revolver Maps-3D地球仪网站定制

    这是个网站统计的小插件,大家可以看到那些国家,哪些城市对本网站进行了访问,很直观的一种表现方式. 这个小插件不需要你写任何代码,只需要去它官方网站定制你自己需要的代码.它的地址是:http://www ...

  6. 对table最后一行显示与隐藏

    //显示table最后一行,如果用block的话,可能会影响到页面的样式 $("#table tr").get($("#table tr").length - ...

  7. php内置函数分析之array_change_key_case()

    PHP_FUNCTION(array_change_key_case) { zval *array, *entry; zend_string *string_key; zend_string *new ...

  8. bzoj4011 [HNOI2015]落忆枫音 拓扑排序+DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4011 题解 首先考虑如果没有那么一条被新加进来的奇怪的边的做法. 我们只需要给每一个点挑一个父 ...

  9. Arduino-LiquidCrystal_I2C 液晶库

    I2C转接板上[PCF8574T转接板]VCC接5V,GND接GND,SCL接SCL(即A05),SDA接SDA(即A04) 常用的函数是 lcd.init(),lcd初始化 setCursor(x, ...

  10. 花式赋值、列表、字典、解压缩、input()、格式化学习笔记

    目录 花式赋值 列表(list) 字典(dict) 解压缩 input()与用户交互 格式化的三种方式 f_String格式化(important) %s.%d占位符 format 格式化(不常用) ...