Log4j 配置文件的理解
一、Log4j的好处
1 方便工程中日志处理,如开发的时候日志级别为debug,部署到正式服务器中改成info
则所有的debug级别的日志就会屏蔽掉
2 方便将日志写到统一的日志文件,并且文件格式统一
3 日志可以滚动添加,并且到达一定大小重新生成另一个日志文件
4 灵活配置日志文件地址
二理解:
1)rootLogger定义与配置,用class得到的logger对象则会按照rootLogger的方式打印log
看一组配置:定义rootLogger并且
指定日志级别为debug,程序中大于该级别的全部可以显示
定义两个appender,并且在下面每个appender都配置相应的写日志信息
rootLogger :Logger logger = Logger.getLogger(DownloadServlet.class );
上面实例化logger都会按照下面的方式生成日志
1 stdout打印控制台 2 fileout生成日志文件
#定义输出级别和输出appender
log4j.rootLogger=debug,stdout,fileout
#配置stdout这个apender输出形式
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%t] %-5p %c.%M(%L) - %m%n
#配置fileout这个apender的输出
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=${catalina.home}/logs/test.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
2)自定义包,使用的时候Logger.getLogger("定义的appender名字");
下面调用的时候用Logger.getLogger("file");取得对象
自定义一个apender_com的日志处理方式,自定义的日志名称为file。
log4j.logger.file=debug,apender_com
log4j.appender.apender_com=org.apache.log4j.DailyRollingFileAppender
log4j.appender.apender_com.File=${catalina.home}/logs/apender_com.log
log4j.appender.apender_com.DatePattern='.'yyyy-MM-dd
log4j.appender.apender_com.layout=org.apache.log4j.PatternLayout
log4j.appender.apender_com.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
3)带有包名和类型
这中方式还没有测试具体怎么使用:log4j.logger.packageName[.ClassName]=level[,appender]
三、appender参数的理解
log4j.appender.appenderName=someAppender(选择一种输出平台,文件还是控制台)
[log4j.appender.appenderName.File=文件名](文件输出定义路径)
log4j.appender.appenderName.layout=输出布局
log4j.appender.appenderName.layout.ConversionPattern=输出格式
1)appenderName取值
a),org.apache.log4j.ConsoleAppender(控制台)
b),org.apache.log4j.FileAppender(文件)
c),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
d),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,
还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件)。
e),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
2)log4j.appender.appenderName.layout指定日志信息的格式(布局)
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
3)log4j.appender.appenderName.layout.ConversionPattern格式化日志信息
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。