【日志】log4j的使用配置与参数解析

来源:互联网 发布:js特效模板 编辑:程序博客网 时间:2024/06/05 10:48

一、Log4j简介

1.log4j由三个重要组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。
2.优先级(level)从高到低有:ERROR,WARN,INFO,DEBUG。
3.输出目的地可以是:控制台,文件,GUI组件,甚至是套接口服务器,NT的事件记录器,UNIX Syslog守护进程等;log4j配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等功能。
4.log4j支持两种配置文件格式:XML格式与properties格式。

二、配置方式:

\#配置根Logger
log4j.rootLogger = [level],A1(appenderName),A2,...
\#配置日志信息输出目的地Appender
log4j.appender.A1=fully.qualified.name.of.appender.class
log4j.appender.A1.option1=value1
log4j.appender.A1.optionN=valueN
\#配置日志信息格式(布局)
log4j.appender.A1.layout=fully.qualified.name.of.layout.class
log4j.appender.A1.layout.option1=value1
log4j.appender.A1.layout.optionn=valueN

Appender为日志输出目的地,log4j提供的appender有:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriteAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,log4j的日志输出格式有:
org.apache.log4j.HTMLLayout(以HTML表格式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局格式)
org.apache.log4j.SimpleLayout(只包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

打印参数:log4j采用类似c语言中的printf函数的打印格式格式化日志信息,如下:
%m 输出代码中指定的消息
%p 输出优先级(level)
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出日志信息所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%l 输出日志事件发生的位置,相当于%c.%M(%F:%L)的组合,包括类名、发生的线程,以及在代码中的行号:如Testlog4.main(TestLog4.java:10)
%F 输出日志消息所产生时所在的文件名称
%n 输出一个回车换行符,windows平台为\r\n,Unix平台为\n
%d 输出日期时间点的日期和时间,默认格式为ISO08601,也可以在其后指定格式,比如:
%d{yyyy MMM dd HH:mm:ss SSS}
%L 输出代码中的行号
%x 输出和当前线程相关的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用。

可以在%与模式字符之间加上修饰符来控制最小宽度、最大宽度、文本对齐方式
%20c:输出类名,最小宽度20,如果类名小于20,默认为右对齐。20前面加“-”是左对齐
%.30 输出类名,如果类名>30 会将左边多出的字符串截掉
%20.30c :如果类名小于20就补空格,大于30,截去左边字符。

各选项都有的属性
Threshold=WARN:指定日志消息的输出最低层次
ImmediateFlush=true:默认值是true,意味着所有的消息都会被立即输出
1)ConsoleAppender选项:
Target=System.err:默认情况下:System.out,指定输出控制台
2)FileAppender选项
File=mylog.txt:指定消息输出到mylog.txt文件中
可指定绝对路径和根据系统属性变量来指定相对路径,如${user.dir}/logs/ws_02_app.log 就是在tomcat下的log中生成日志文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
3)DailyRollingFileAppender
File,Append
DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
‘.’yyyy-MM:每月
‘.’yyyy-ww:每周
‘.’yyyy-MM-dd:每天
‘.’yyyy-MM-dd-a:每天两次
‘.’yyyy-MM-dd-HH:每天
‘.’yyyy-MM-dd-HH-mm:每分钟
4)RollingFileAppender选项
File,Append
MaxFileSize=10kb:后缀可以是kb,Mb或者是GB。在日志文件达到该大小时,将会自动滚动,即将原来的内容移到my.log.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,默认为1

三、在程序中的使用

1)使用之前:导入commons-logging.jar,log4j.jar,将log4j.properties放到src目录下。
2)得到记录器:
使用log4j,第一步就是获取日志记录器,它将负责控制日志信息。
语法为:public static Logger getLogger(String name);
推荐使用commons-logging结合log4j进行日志记录
private static Log logger = LogFactory.getLog(YourClass.class);
3)插入记录信息(格式化日志信息)
使用语法:
logger.debug(Object message); .info(..);.warn(…);.error(…);

四、log4j比较全面的配置

Java代码
log4j.rootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apache=true
#应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=[framework] %d %c -%-4r [%t]其中framework可以替换成任意信息

0 0
原创粉丝点击