log4j配置参数详解——按日志文件大小、日期切分日志文件
项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式。下面就总结一下log4j常用的配置参数以及切分日志的不同方式。
一、基本配置解析
常用配置1:
- #日志级别,还可以log4j.rootLogger=INFO,file2,file3 指定file2、3的输出文件
- log4j.rootLogger=info,exception,thread
- #info
- #每一天产生1个日志文件
- log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
- #定义日志存放路径
- log4j.appender.info.File=/usr/tomcat_logs/mailSystem_info.log
- #日志文件是否追加
- log4j.appender.info.Append=true
- #定义的时间格式,如果时间定义到分钟(mm)就是每分钟生成一个日志文件,而这里定义的这个格式就是日志名后缀
- #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH-mm 每分钟
- #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-HH 每小时
- #log4j.appender.file3.DatePattern='_' yyyy-MM-dd 每天
- #log4j.appender.file3.DatePattern='_' yyyy-MM-dd-a 每半天
- #日志输出级别
- log4j.appender.info.Threshold=INFO
- #日志编码
- #log4j.appender.file3.Encoding=UTF-8
- #日志中输出的日志的格式
- log4j.appender.info.layout=org.apache.log4j.PatternLayout
- #定义的日志格式
- log4j.appender.info.layout.ConversionPattern=%t %d %p [%c] - %m%n
常用配置2:
- #debug
- log4j.appender.debug=org.apache.log4j.RollingFileAppender
- log4j.appender.debug.File=/usr/tomcat_logs/mailSystem_debug.log
- #设置日志文件的大小
- log4j.appender.debug.MaxFileSize=100M
- #保存10个备份文件
- log4j.appender.debug.MaxBackupIndex=10
- log4j.appender.debug.Append=true
- log4j.appender.debug.Threshold=DEBUG
- log4j.appender.debug.layout=org.apache.log4j.PatternLayout
- 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 |
- public DailyRollingFileAppender (Layout layout, String filename,
- String datePattern) throws IOException {
- super(layout, filename, true);
- this.datePattern = datePattern;
- activateOptions();
- }
这些参数策略会传入到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 输出产生该日志事件的线程名
三、切分效果
按照日期切分日志: 按照文件大小切分日志:
log4j配置参数详解——按日志文件大小、日期切分日志文件的更多相关文章
- zookeeper的配置参数详解(zoo.cfg)
配置参数详解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg文件) 参数名 说明 clientPort 客户端连接server的端口,即对外服务端口,一般设置为2181吧. data ...
- [转帖]持久化journalctl日志清空命令查看配置参数详解
持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...
- mha配置参数详解
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- reids配置参数详解
转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no 默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...
- nginx配置参数详解
配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...
- Redis配置参数详解
Redis配置参数详解 /********************************* GENERAL *********************************/ // 是否作为守护进 ...
- MHA配置参数详解 【转】
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- HAproxy 配置参数详解
HAproxy 配置参数详解 /etc/haproxy/haproxy.cfg # 配置文件 ----------------------------------------------------- ...
- samba 配置参数详解
samba 配置参数详解: 一.全局配置参数 workgroup = WORKGROUP说明:设定 Samba Server 所要加入的工作组或者域. server string = Samba S ...
随机推荐
- JavaEE高级-Maven学习笔记
Maven简介 1.Maven是一款服务于Java平台的自动化构建工具. 2.构建: - 概念:以“Java源文件”.“框架配置文件”.“JSP”.“HTML”.“图片”等资源为“原料”,去“生产”一 ...
- ELK集群搭建
基于5台虚拟机,搭建ELK集群. 方案: 1. ELK是日志分析平台,而不是一款软件,是一整套解决方案,是三个软件产品的首字母缩写,ELK分别代表: Elasticsearch:负责日志检索和储存 L ...
- PAT Advanced 1036 Boys vs Girls (25 分)
This time you are asked to tell the difference between the lowest grade of all the male students and ...
- hdu 4638 Group(离线+树状数组)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- Java并发-CycliBarrier
栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程.package com.examp ...
- css多种方式实现双飞翼布局
圣杯布局.双飞翼布局效果图 从效果图来看圣杯布局.双飞翼布局效果是一样一样的.圣杯布局.双飞翼布局就是左右两侧宽度固定,中间内容宽度自适应,即100% 圣杯布局 <style> *{ ma ...
- axios中put和patch的区别(都是update , put是需要提交整个对象资源,patch是可以修改局部)
patch方法用来更新局部资源,这句话我们该如何理解? 假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段.可你的编辑功能因为需求,在某个特别的 ...
- 多个excel文件内容合并到一个excel文件的多个sheet的小程序
# -*- coding:utf-8 -*- import xlrd, xlsxwriter # 待合并excelallxls = ["D:\\excelcs\\***.xlsx" ...
- OmniGraffle 7使用的探索
进去后可以将界面简化为4个主要区域:工具栏.工具栏.检查器和画布. 1.画布是在项目中创建.编辑和移动对象的地方 2.删除画布 选择编辑 画布删除画布 3.OmniGraffle项目至少需要一个画布 ...
- k-means原理和python代码实现
k-means:是无监督的分类算法 k代表要分的类数,即要将数据聚为k类; means是均值,代表着聚类中心的迭代策略. k-means算法思想: (1)随机选取k个聚类中心(一般在样本集中选取,也可 ...