日志控制log4j的使用总结

来源:互联网 发布:如何优化医疗卫生服务 编辑:程序博客网 时间:2024/05/21 14:06

Log4j是个广泛使用的日志控制工具,并且使用起来相对方便,之前一直搞不大清楚如何使用。这两天稍微花时间简单使用和测试了一下。把使用过程和细节进行总结,以便以后忘记的时候进行翻阅。

1.引入jar包

首先准备引入log4j-1.2.16.jar包,还有说法说要同时引入commons-logging-1.1.1.jar包,姑且就两个包都引入。

2.编写log4j.properties配置文件

编写log4j的配置文件,并且名字一定是log4j.properties,放置在src目录下(好像放置在其他特定目录上也是可以的,但是放置在src下是经过检验没问题的)

3. log4j.properties配置内容

log4j.rootLogger=error,A1,CONSOLE

--这个是配置文件最根一层,第一个字符串error是指控制输出的日志级别(error的意思是指比error级别低的日志都忽略掉不输出),A1和CONSOLE都是输出的目的地appender的名字

日志严重级别:

FATAL     0  //导致程序退出的严重错误

ERROR    3 

WARN    4 

INFO      6 

DEBUG    7

其中数字越大的代表严重级别越低,所以上面的配置的意思是只有报错和导致程序退出的严重错误日志才输出,其他警告,信息,和调试的日志都被忽略掉。

 

接下来就是对A1和CONSOLE这两个输出目的地对象的配置了

log4j.appender.A1 =org.apache.log4j.DailyRollingFileAppender

log4j.appender.A1.File =D:\\data2\\DispatchServer.log

log4j.appender.A1.layout =org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern= [%d] [%-5p] [%t] %-17c{2} %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Target=System.out

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=[%d][%-5p] [%t] %-17c{2} %m%n

--可以看出A1和CONSOLE这两个appender对象下面的配置字段都是相同的,只是内容有所区别

(1)log4j.appender.A1= org.apache.log4j.DailyRollingFileAppender

--这行配置意思是log4j中名字为A1的appender的类型是DailyRollingFileAppender(这个说明输出目的地是文件)

(2)log4j.appender.A1.File = D:\\data2\\DispatchServer.log

--这行配置意思是log4j中名字为A1的appender的输出文件的路径名是D:\\data2\\DispatchServer.log

如果输出目的地不是文件的话,比如说是标准输出控制台ConsoleAppender,那么

log4j.appender.CONSOLE.Target=System.out

(3)然后到log4j.appender.A1.layout = org.apache.log4j.PatternLayout

--这行配置就是说明日志输出的布局,PatternLayout是指自定义的格式

(4)log4j.appender.A1.layout.ConversionPattern = [%d] [%-5p] [%t]%-17c{2} %m%n

--这就是自定义的格式了,格式是时间,日志级别,线程名,类名,内容+换行:

[2017-09-21 14:37:21,766] [INFO ] [main]operatingPlatform.Log4jTest log4j测试

 

格式参照表

%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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

 

4.在代码中使用log4j

static Loggerlog=Logger.getLogger(Log4jTest.class);

log.info("log4j测试");

--在代码中使用起来还是非常简单的

 

5. 关于在dubbo中如何通过配置文件进行日志级别的控制

由于dubbo默认也是优先使用log4j作为日志控制机制,所以如果想对dubbo的日志进行级别控制,只要把日志冲突包问题解决,按照上面正常的流程,不用特殊的配置就可以直接控制dubbo框架本身的日志输出管理


有两篇比较详细的博客有更多配置内容的介绍

http://blog.csdn.net/azheng270/article/details/2173430/

http://blog.csdn.net/rogger_chen/article/details/50587920

 

原创粉丝点击