log4j配置

来源:互联网 发布:政务数据资源管理平台 编辑:程序博客网 时间:2024/05/28 11:47
log4j的基本配置格式如下:
#配置根Logger
log4j.rootLogger = [level], appenderName1, appenderName2, ...
 
#配置日志信息输出
log4j.appender.appenderName = appender.class
log4j.appender.appenderName.option1 = value
...
log4j.appender.appenderName.optionN = value
 
#配置日志信息布局
log4j.appender.appenderName.layout = layout.class
log4j.appender.appenderName.layout.option1 = value
...
log4j.appender.appenderName.layout.optionN = value
 
[level]为日志输出级别:FATAL, ERROR, WARN, INFO, DEBUG
 
appender为日志输出位置:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个文件),
org.apache.log4j.RollingFileAppender(文件大小达到指定大小时产生一个新的文件),
org.apache.log4j.WriterAppender(将日志以流的形式发送到任意指定的地方)
 
ConsoleAppender选项:
Threshold:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target:默认值是System.out。
FileAppender选项:
Threshold:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File:指定日志文件路径。
DailyRollingFileAppender选项:
Threshold:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File:指定日志文件路径。
DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
'.'yyyy-MM:每月
'.'yyyy-ww:每周
'.'yyyy-MM-dd:每天
'.'yyyy-MM-dd-a:每天两次
'.'yyyy-MM-dd-HH:每小时
'.'yyyy-MM-dd-HH-mm:每分钟
RollingFileAppender选项:
Threshold:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File:指定日志文件路径。
MaxFileSize:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。
WriterAppender选项:
encoding:用来规定了输出String的编码格式,如果没有设置编码格式,那么按照系统的默认编码格式输出。
ImmediateFlush:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
注:WriterAppender不能被直接配置使用,使用方式如下
Logger.getRootLogger().setLevel(Level.INFO);
WriterAppender wa=new WriterAppender(new SimpleLayout(),System.out);
Logger.getRootLogger().addAppender(wa);
 
 
layout为日志输出格式:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地制定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间,线程,类别等信息)

layout参数:log4j采用类似C语言的printf的打印格式格式化日志信息
%m  输出代码中的日志信息
%p   输出优先级,即DEBUG, INFO, WARN, ERROR, FATAL
%r    输出自应用启动到输出该日志信息所耗费的毫秒数
%c    输出所属的类别,一般为类的全名
%t     输出产生该日志的线程名
%l     输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类名,方法名,文件名以及在代码中的行数
%n    输出一个回车符
%d    输出日志时间,默认格式为ISO8601,可在其后指定格式,如:%d{yyyy-MM-dd HH:mm:ss SSS}
%M   输出产生日志信息的方法名
%F    输出产生日志信息的文件名称
%L    输出日志代码行号
%x    输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
%%   输出一个"%"字符
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
%-20c:"-"号表示左对齐。
%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
 
为目录设置单独的日志级别:
log4j.logger.[package] = [level], appenderName
 
初始化log4j:
// 使用.properties配置文件的方式
 String logPath = "配置文件路径";
PropertyConfigurator.configure(logPaht);
// 使用.xml配置文件的方式
URL url = 配置文件的URL;
DOMConfigurator.configure(url);


参考:http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html

0 0