log4j日志配置(按天/按日)
项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式。下面就总结一下log4j常用的配置参数以及切分日志的不同方式。
一、JAR包准备
压缩包中有三个jar包:
log4j-1.2.16.jar
tomcat-juli-adapters.jar
tomcat-juli.jar
说明:请去官网下载相应版本号的tomcat-juli.jar,tomcat-juli-adapters.jar类包。
下载地址:http://www.apache.org/dist/tomcat 在相应版本号中的bin/extras路径下。
二、改动相关配置文件
1、 改动${catalina.home}/conf/context.xml
改动:<Context >为<Context swallowOutput="true">这样才能全部的把tomcat的stdout给接管过来。
2、 复制log4j-1.2.16.jar和tomcat-juli-adapters.jar 到tomcat的lib下。
3、 复制tomcat-juli.jar到${catalina.home}/bin下。在该文件夹会存在该文件,覆盖就可以。
4、 建立log4j.properties,并把其放到到tomcat的/lib下。
三、log4j.properties详解
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
配置中采用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对象。
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
配置中使用到另一个类RollingFileAppender,这个类也继承子FileAppender,用于按照一定的size文件大小,back up 日志文件。
这个类中起关键作用的两个参数maxFileSize和maxBackupIndex,用于确定每个日志文件的size大小和备份个数。默认分别为10MB和1,按照设置的index大小,会默认将文件copy to 1,2等文件后缀进行备份。
3、Pattern字段解释
在两个配置中,均使用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日志配置(按天/按日)的更多相关文章
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- log4j 日志配置和jar包下载
1.日志log4j文件配置 ${webapp.root}才是项目根目录log4j.appender.logfile.File= ${catalina.home}/log/filter.log 指生成日 ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- (转)Log4J日志配置详解
http://www.cnblogs.com/ITtangtang/p/3926665.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源 ...
- java Log4j日志配置详解大全
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Log4J日志配置详解[转]
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Log4J日志配置与Juit测试
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器).Appenders(输出源)和Layouts(布局). 这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- tomcat 6.x + log4j日志配置并按天(或大小)生成文件
tomcat日志,默认路径在${catalina.home}/logs目录下,默认使用的是tomcat自己封装的logging工具类,默认配置文件使用的${catalina.home}/conf/ ...
- Log4J日志配置具体解释
一.Log4j简单介绍 Log4j有三个基本的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综 ...
- springboot 关于log4j日志配置
自动加载配置文件:(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log ...
随机推荐
- C#利用CDO.Message发送邮件
如何引用CDO.Message? cod.message的引用位置: C:\Windows\System32\cdosys.dll CDO.Message objMail = new CDO.Mess ...
- debian9 下编译安装tengine2.2.1
首先下载tengine的源码包,这个大家都会下载吧 wget http://tengine.taobao.org/download/tengine-2.2.1.tar.gz 然后解压缩 tar zxf ...
- mysql 设置多个字段聚合自增
DROP TEMPORARY TABLE IF EXISTS ttp_firstInvest; CREATE TEMPORARY TABLE ttp_firstInvest ( userid varc ...
- (转).NET Core 使用 log4net
https://blog.csdn.net/liyazhen2011/article/details/83382221 1.安装log4net 建立.NET Core工程 - 右键 - 管理N ...
- C++ VC实现对话框窗口任意分割
最近写MFC的程序,想在对话框里实现窗口的任意分割.现在网络资料一大抄,找个东西实在麻烦.总算这个很简单,很快就搞定了,写下来做个笔记. 个人认为简单问题最好就是直接贴源代码,一看就明白,说来说 ...
- 怎么在idea中新建package包,只有directory选项
http://blog.csdn.net/liyanlei5858/article/details/77320063
- js高级-闭包
function foo(x){ var tmp = 3; return function(y){ //把一个函数作为返回值,定义时候的作用域 console.log(x+y+(++tmp)) //+ ...
- CSS----学习
CSS---表现层,修饰和表现html文档,为了解决结构层和表现层分离的问题. 通过CSS极大的提高了工作效率,方便工作人员维护和管理CSS:层叠样式表,目前用的最广泛的css版本为css2,最新版本 ...
- VUE 关于理解$nextTick()的问题
Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM.this.$nextTick()官方介绍:将回调延迟到下次 DOM 更新循环之后执行.在修改数据之后立即使用它,然后等待 ...
- 头部尾部始终处于两端(适用于pc端和移动端)
此代码展示的效果阐述:(随着屏幕宽高度的变化而变化) 当页面内容小于屏幕高度时,头尾分别处在屏幕顶部和屏幕底部: 当页面出现滚动条时,头尾分别处于屏幕顶部和内容底部: <style> *{ ...