Log4j 巩固及学习
Posted testDemo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j 巩固及学习相关的知识,希望对你有一定的参考价值。
版本说明: log4j-1.2.17.jar & jdk 1.7.0_67
分三部分:
A、样例说明使用Log4j
B、对 log4j.properties 相关配置的说明
C、总结
为什么要使用 log4j来管理日志,相信用过log4j的同学都会觉得这是一个不错的工具框架,在项目开发的时候比 System.out.println 使用体验更加方便。有很多网友遇到 使用System.out.println 使主线程阻塞的情况,兄弟项目组也碰到过此类问题,目前项目中不允许使用 System.out.println 进行日志输出。
Log4j 有诸多优点:
日志有多种日志等级 并可配置,
可以输出到控制台、文件、GUI组件等
可根据需要设置所需日志的相关属性(打印时间、日志所属代码模块、程序的行 号、线程名称等)
A、样例说明使用Log4j
优点不多说了,一个简单的例子。下面是工程目录结构图 (注:Spring 工程)
在 Java项目中也可测试,
private static Logger LOGGER = LogManager.getLogger(Log4jTest.class);
index.jsp 是测试页面,在jsp页面内引入 import="org.apache.log4j.Logger"
以下是 log4j.properties 配置:
以下是web.xml 配置:
applicationContext.xml 中没有做任何操作,只做了简单的声明。
以下加在 index.jsp,是测试代码:
Logger.getLogger(this.getClass()).fatal(" this is fatal log ...");
Logger.getLogger(this.getClass()).error(" this is error log ...");
Logger.getLogger(this.getClass()).info(" this is info log ...");
Logger.getLogger(this.getClass()).debug(" this is debug log ...");
以下是控制台打印的日志:
以下是输出至日志文件 (在 log4j.properties 可配置文件的阈值,文件大小超过阈值会生成新的日志文件,见下图) :
B、对 log4j.properties 相关配置的说明
1、日志级别
1) ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
2) Log4j建议只使用四个级别,优先级从高到低分别是 ERROR > WARN > INFO > DEBUG
2、定义日志输出的目的地,日志输出目的地主要以下几种:
1)org.apache.log4j.ConsoleAppender(控制台)
2)org.apache.log4j.FileAppender (文件)
3)org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
4)org.apache.log4j.RollingFileAppender (文件大小超过设定的阈值,产生一个新的文件,这个在这次案例就有)
5)org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意制定的地方)
3、定义日志信息格式[1] (根据需要选择参数,也可参看样例中 log4j.properties 的配置)
1)%t 用来输出生成该日志事件的线程的名称
2)%p 用于输出日志事件的优先级,即DEBUG,INFO,WARN,ERROR,FATAL
3)%r 用于输出从layout(布局)的构建到日志事件创建所经过的毫秒数
4)%c 用于输出日志事件的category(类别),通常就是所在类的全名
5)%F 用于输出被发出日志记录请求,其中的文件名
6)%d 用于输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20017年02月18日 22:10:28,921
7)%L 用于输出日志事件的发生位置,即在代码中的行数。举例:10
8)%l 用于输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
9)%% 用于输出%标志
10)%M 用于输出打印该条日志的方法名
11)%m 用于输出代码中指定的消息
12)%n 用于输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
C、总结:
目前工作常用的是4种日志级别、控制台和文件输出、需注意日志文件阈值 和份数。看了网上一些资料,还有很多其他用法,比如间隔时间多长生成日志、定义sql语句的输出级别、定义具体某个包下的日志输出级别等等,这么些好玩的功能后续有时间好好玩一下。
[1] 可参看博客 http://www.cnblogs.com/godtrue/p/6442347.html,上面有更详细的介绍。上面我只选择了一部分平时用到的
以上是关于Log4j 巩固及学习的主要内容,如果未能解决你的问题,请参考以下文章