log4j怎么用,Log4J 1.x 配置详解
摘要:一 Log4J有三个主要的组件 1.1 Loggers(记录类型) Log4j划分了5个级别:DEBUG,INFO,WARN,ERROR,FATAL。 这5个level是有优先级顺序的,DEBUG<INFO<WARN<ERROR<FATAL。并且输出的日志不能小于你 指定的日志级别。比如你指定了WARN级别,可以输出
一 Log4J有三个主要的组件
1.1 Loggers(记录类型)
Log4j划分了5个级别:DEBUG,INFO,WARN,ERROR,FATAL。 这5个level是有优先级顺序的,DEBUG<INFO<WARN<ERROR<FATAL。并且输出的日志不能小于你
指定的日志级别。比如你指定了WARN级别,可以输出WARN,ERROR和FATAL的日志,但是不会输出DEBUG和INFO级别的日志
1.2 Appenders(输出)
有了日志,那么日志应该输出到哪儿,控制台?文件? 那么Appenders就是来干这个事情的。Appenders有一下集中输出类型:
控制台:org.apache.log4j.ConsoleAppender
文件:org.apache.log4j.FileAppender
每天产生一个日志文件:org.apache.log4j.DailyRollingFileAppender
文件大小超过制定阀值产生一个新的文件:org.apache.log4j.RollingFileAppender
将日志信息以流的形式发送到任何地方:org.apache.log4j.WriterAppender
1.3 Layouts(布局)
Log4J提供了可以自己控制输出格式,Layouts就可以干这个事情,Layouts提供四种日志输出格式:
HTML表格形式:org.apache.log4j.HTMLLayout
灵活地指定布局模式:org.apache.log4j.PatternLayout
包含INFO类型的布局模式:org.apache.log4j.SimpleLayout
包含线程,日志类型的布局模式:org.apache.log4j.TTCCLayout
二 配置Log4J
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties属性文件。下面以properties属性文件为例介绍log4j.properties的配置。log4j怎么用、
2.1 配置Root Logger
log4j.rootLogger = level, appenders, appenders, ...
level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用中间四个级别(ERROR、WARN、INFO、DEBUG)。通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。
appenders:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开
示例:log4j.rootLogger = DEBUG,stdout,D,R
2.2 配置日志信息输出目的地(appender)
2.2.1 ConsoleAppender
log4j.appender.${自定义appender名字}:指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Target = 输出类型(System.out|System.err)
示例:
log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold = INFO
log4j.appender.STDOUT.ImmediateFlush = true
log4j.appender.STDOUT.Target = System.out
2.2.2 FileAppender
log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径
示例:
log4j.appender.F=org.apache.log4j.FileAppender
log4j.appender.F.Threshold = DEBUG
log4j.appender.F.ImmediateFlush = true
log4j.appender.F.Append = true
log4j.appender.F.File = /opt/app/logs/server.out
2.2.3 DailyRollingFileAppender
log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径
log4j.appender.${自定义appender名字}.DatePattern = 指定日志滚动频率
常用的频率选项:
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.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.ImmediateFlush = true
log4j.appender.D.Append = true
log4j.appender.D.File = /opt/app/logs/server.out
log4j.appender.D.DatePattern = '.'yyyy-MM-dd
2.2.4 RollingFileAppender
log4j.appender.${自定义appender名字} = 指定Appender类型
log4j.appender.${自定义appender名字}.Threshold = 指定日志信息的最低输出级别,默认为DEBUG
log4j.appender.${自定义appender名字}.ImmediateFlush = 消息都会被立即输出(true|false)
log4j.appender.${自定义appender名字}.Append = 添加还是覆盖(true|false)
log4j.appender.${自定义appender名字}.File = 日志文件路径
log4j.appender.${自定义appender名字}.MaxFileSize = 指定超过阀值数,然后滚动日志文件,单位可以是KB,MB,GB
log4j.appender.${自定义appender名字}.MaxBackupIndex = 备份数(可选参数)
示例:
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R.Threshold = DEBUG
log4j.appender.R.ImmediateFlush = true
log4j.appender.R.Append = true
log4j.appender.R.File = /opt/app/logs/server.out
log4j.appender.R.MaxFileSize = 10MB
2.2.5 WriterAppender
是前面几个Appender的父类,如果我们要自定义Appedner,也可以继承WriterAppender
2.3 配置Layout
log4j.appender.${appenders}.layout= 类名
2.3.1 HTMLLayout
log4j.appender.stdout.layout.Title=设置title
log4j.appender.stdout.layout.LocationInfo=是否设置locationInfo(true|false)
2.3.2 PatternLayout
我们可以通过PatternLayout灵活地指定布局模式,ConversionPattern属性指定怎样格式化输出日志
格式化参数如下:
%p: 输出日志信息的优先级
%d: 输出日志时间点的日期或时间,指定日期格式%d{yyyy-MM-dd HH:mm:ss,SSS}
%r: 输出自应用程序启动到输出该log信息耗费的毫秒数
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数
%c: 输出日志信息所属的类全名
%M: 输出产生日志信息的方法名
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的具体日志信息
%n: 输出一个回车换行符
%-n参数:n表示数字,意思就是参数长度为n,如果参数长度不够,左对齐,然后剩余的位数则用空格填满,比如%-5p,如果是DEBUG的话就是DEBUG,长度为5 如果是info的话长度为4,剩余的一位用空格填满。
示例:
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
2.3.3 SimpleLayout
包含日志信息的级别和信息字符串
2.3.4 TTCCLayout
包含日志产生的线程、类别等等信息