log4j配置讲解
来源:互联网 发布:哈尔滨网络公安局 编辑:程序博客网 时间:2024/05/20 21:43
在实际应用中,要使Log4j在系统中运行须事先设定配置文件。配置文件事实上也就是对Logger、Appender及Layout进行相应设定。
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties属性文件。
下面以properties属性文件为例介绍log4j.properties的配置。
【1】配置根Logger:
语法格式如下:
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
log4j.additivity.org.apache=false:表示Logger不会在父Logger的appender里输出,默认为true。
level :设定日志记录的最低级别。
appenderName:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。
示例如下:
log4j.rootLogger=info,Console,File
【2】配置日志信息输出目的地(appender)
语法格式如下:
log4j.appender.appenderName = className
appenderName:自定义appderName,在log4j.rootLogger设置中使用;
className:可设值如下:
(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:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。
示例如下:
log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Threshold=DEBUGlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
(2)FileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=${catalina.base}/mylog/appsys.log:指定当前消息输出到appsys.log文件中。
示例如下:
log4j.appender.logFile=org.apache.log4j.FileAppender log4j.appender.logFile.Threshold=DEBUG log4j.appender.logFile.ImmediateFlush=true log4j.appender.logFile.Append=true log4j.appender.logFile.File=D:/logs/log.log4j log4j.appender.logFile.layout=org.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) –> [%t] %l: %m %x %n
(3)RollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=${catalina.base}/logs/appsys.log:指定消息输出到appsys.log文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。当第二个日志文件达到最大值,第一个日志文件将被删除,之后所有的日志信息将被回滚到第一个日志文件。
示例如下:
log4j.appender.R.File=${catalina.base}/logs/appsys.loglog4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.MaxFileSize=5000KB log4j.appender.R.MaxBackupIndex=8 log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppender
(4)DailyRollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=${catalina.base}/mylog/appsys.log:指定当前消息输出到appsys.log文件中。
DatePattern=’.’yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为lappsys.log,前一个月的日志文件名为appsys.log.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
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:每分钟
示例如下:
log4j.appender.File=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.File.File=${catalina.base}/HNTOWER/hn_tower_check.loglog4j.appender.File.Threshold=INFOlog4j.appender.File.Append=truelog4j.appender.File.ImmediateFlush=truelog4j.appender.File.DatePattern=yyyy-MM-dd'.log'log4j.appender.File.layout=org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
产生日志如下图所示:
【3】配置日志信息的输出格式(Layout):
语法格式如下:
log4j.appender.appenderName.layout=className
className:可设值如下:
(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:输出java文件名称和行号,默认值是false。
Title=My Logging: 默认值是Log4J Log Messages。
(2)PatternLayout选项:
ConversionPattern=%m%n:设定以怎样的格式显示消息。
(3)XMLLayout选项:
LocationInfo=true:默认值是false,输出java文件和行号。
【4】设置不同框架(不同包)的日志级别
示例如下:
log4j.logger.org.hibernate=INFO#log4j.logger.org.hibernate=ERROR#log4j.logger.org.hibernate=DEBUG#log4j.logger.org.apache=INFO#log4j.logger.org.apache=DEBUG#log4j.logger.org.apache=ERROR#log4j.logger.org.apache.struts2=INFO#log4j.logger.org.apache.myfaces=INFO#log4j.logger.org.apache.myfaces=DEBUGlog4j.logger.org.apache.myfaces=ERRORlog4j.logger.org.springframework=INFO#log4j.logger.org.springframework=DEBUG#log4j.logger.org.springframework=ERROR#log4j.logger.com.opensymphony.xwork2=INFO#log4j.logger.com.opensymphony.xwork2=INFO#log4j.logger.com.opensymphony.xwork2.config=DEBUGlog4j.logger.com.opensymphony.xwork2=ERRORlog4j.logger.freemarker=INFO#log4j.logger.freemarker=DEBUG#log4j.logger.freemarker=ERRORlog4j.logger.org.quartz=INFO#log4j.logger.org.quartz=DEBUG#log4j.logger.org.quartz=ERRORlog4j.logger.org.json=INFO#log4j.logger.org.json=DEBUG#log4j.logger.org.json=ERRORlog4j.logger.javax.faces=INFO#log4j.logger.javax.faces=DEBUG#log4j.logger.javax.faces=ERROR#log4j.logger.org.apache.ibatis=INFO,debug,stdout #log4j.logger.org.apache.ibatis=DEBUG#log4j.logger.org.apache.ibatis=ERRORlog4j.logger.org.apache.ibatis=DEBUG#log4j.logger.org.mybatis.spring=INFOlog4j.logger.org.mybatis=DEBUGlog4j.logger.org.mybatis.spring=DEBUGlog4j.logger.org.mybatis.spring.mapper=DEBUG#log4j.logger.org.mybatis.spring=ERRORlog4j.logger.org.activiti=INFO#log4j.logger.org.activiti=DEBUG#log4j.logger.org.activiti=ERRORlog4j.logger.oracle=INFO#log4j.logger.oracle=DEBUG#log4j.logger.oracle=ERROR#设置自定义包的级别#log4j.logger.com.web=INFOlog4j.logger.com.web=DEBUG#log4j.logger.com.web=ERRORlog4j.logger.java.sql.Connection = DEBUGlog4j.logger.java.sql.Statement = DEBUGlog4j.logger.java.sql.PreparedStatement = DEBUGlog4j.logger.java.sql.ResultSet =ERROR #log4j.logger.java.sql.ResultSet=DEBUG
【5】输出信息到单独文件
【1】输入error信息到单独文件
即,根据级别划分,将error日志输出到单独文件。
log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/error.log ## 异常日志文件名log4j.appender.D.Append = truelog4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
【2】输出自定义类到单独文件
即,将指定类的日志输出到单独文件。
如果想对不同的类输出不同的文件(以cn.com.Test为例),先要在Test.java中定义:
private static Log logger = LogFactory.getLog(Test.class);
然后在log4j.properties中加入如下配置(以类的全类名作为logger自定义名字):
log4j.logger.cn.com.Test= DEBUG, testlog4j.appender.test=org.apache.log4j.FileAppenderlog4j.appender.test.File=${myweb.root}/WEB-INF/log/test.loglog4j.appender.test.layout=org.apache.log4j.PatternLayoutlog4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n
也就是让cn.com.Test中的logger使用log4j.appender.test所做的配置。
但是,如果在同一类中需要输出多个日志文件呢?
其实道理是一样的,先在Test.java中定义:
private static Log logger1 = LogFactory.getLog("myTest1");private static Log logger2 = LogFactory.getLog("myTest2");
然后在log4j.properties中加入如下配置(这里注意logger自定义名字和appender自定义名字):
log4j.logger.myTest1= DEBUG, test1log4j.appender.test1=org.apache.log4j.FileAppenderlog4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.loglog4j.appender.test1.layout=org.apache.log4j.PatternLayoutlog4j.appender.test1.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.logger.myTest2= DEBUG, test2log4j.appender.test2=org.apache.log4j.FileAppenderlog4j.appender.test2.File=${myweb.root}/WEB-INF/log/test2.loglog4j.appender.test2.layout=org.apache.log4j.PatternLayoutlog4j.appender.test2.layout.ConversionPattern=%d %p [%c] - %m%n
也就是在用logger时给它一个自定义的名字(如这里的”myTest1”),然后在log4j.properties中做出相应配置即可。
别忘了不同日志要使用不同的logger(如输出到test1.log的要用logger1.info(“abc”))。
还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?
别急,这里有个开关:
log4j.additivity.myTest1 = false
它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方!
注意这里的”myTest1”是你在程序中给logger起的那个自定义的名字!
如果你说,我只是不想同时输出这个日志到log4j.rootLogger所配置的logfile中,console里我还想同时输出呢!
那也好办,把你的
log4j.logger.myTest1 = DEBUG, test1
改为
log4j.logger.myTest1=DEBUG, test1,console
- log4j配置讲解
- log4j讲解和配置
- log4j配置讲解
- Log4j配置讲解
- log4j基础知识&Log4j.properties配置讲解
- log4j配置(详细讲解)
- Log4j配置详细步骤讲解
- log4j讲解
- log4j讲解
- Log4j讲解
- log4j的配置文件讲解
- log4j讲解一
- log4j讲解二
- Log4j详细讲解
- Log4j基础讲解
- log4j 详细讲解
- Log4j的详细讲解
- log4j详细讲解
- Java Solr全文搜索引擎的实现
- 2、UNIX标准及实现
- 类和关键字声明
- keil debug memory窗口
- Linux磁盘分区与挂载
- log4j配置讲解
- Eclipse中maven项目update project后项目编码会自动变成GBK的问题
- 根据字符串恢复IP问题
- ubuntu14.04 出现symbol lookup error
- 背包问题
- QSplitter在QTabWidget中使用
- 如何做出正确的选择
- Java中Math.round()方法原理解读
- js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf