Java中使用log4j记录日志
在项目开发中,记录错误日志是一个很有必要功能。一是方便调试;二是便于发现系统运行过程中的错误;三是存储业务数据,便于后期分析;
在java中,记录日志,有很多种方式。
比如,自己实现。
自己写类,将日志数据,以io操作方式,写数据到文本文件。或者是写到数据库中。
比如,使用log4j。
log4j,这也是此文要记录的。log4j,以前在用.Net做web form时,用log4net。平台通吃。而且,log4j可以将日志,输出到console窗口,输出到文本文件,输出到数据库等,功能还是很强大的!
比如,使用jdk自带的logging.jar中的方法。
比如,使用slfj。
slfj,是也是一个很强大的功能。slfj旨在一统天下,也就是slfj提供了logging.jar 和 log4j的接口,可以通过slfj来调用log4j,也可以调用jdk的logging。
从需求出发,记录log4j
1、log4j引入哪些包?
去官网看看吧
2、添加配置文件
在src下,也就是class下,把log4j的配置文件添加进去log4j.properties,标准的properties文件(Properties文件的操作,参考此文)
3、建一个类文件,建主函数,下图为结构

4、修改配置文件,使用log4j将日志输出到console窗口
我们经常使用System.out.println(“日志内容”),来将内容输出。今天不用这个了。用log4j的。
log4J配置文件为:
| 1 2 3 4 5 6 7 8 9 |
###
设置级别和目的地(这里多个目的地) ###
log4j.rootLogger
= DEBUG,CONSOLE
###
这里的me是包,也就是在这个包记录日志时,是只记录debug及以上级别的日志
log4j.logger.me=DEBUG
###
输出到控制台 ###
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{ABSOLUTE} %5p %c{1}:%L - %m%n
|
main主函数调用:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import
org.apache.log4j.Logger;
public
class
Log4jTest {
public
static
Logger logger1 = Logger.getLogger(Log4jTest.class);
public
static
void main(String[] args) {
//logger1
logger1.trace("我是logger1,trace");
logger1.debug("我是logger1,debug");
logger1.info("我是logger1,info");
logger1.warn("我是logger1,warn");
logger1.error("我是logger1,error");
logger1.fatal("我是logger1,fatal");
}
}
|
可以看到console中输出内容:
| 1 2 3 4 5 |
16:51:16,575
DEBUG Log4jTest:15 [main:0]- 我是logger1,debug
16:51:16,578
INFO Log4jTest:16 [main:3]- 我是logger1,info
16:51:16,578
WARN Log4jTest:17 [main:3]- 我是logger1,warn
16:51:16,578
ERROR Log4jTest:18 [main:3]- 我是logger1,error
16:51:16,578
FATAL Log4jTest:19 [main:3]- 我是logger1,fatal
|
5、log4j将日志输出到console窗口,说说输出的格式
在标题4中,看到console的输出内容,是按一定格式输出。格式的配置还是来自于配置文件log4j.properties
log4j.appender.CONSOLE.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
日志输出格式,所用到的参数如下,按需添加:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
%p:
输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d:
输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r:
输出自应用启动到输出该log信息耗费的毫秒数
%c:
输出日志信息所属的类目,通常就是所在类的全名
%t:
输出产生该日志事件的线程名
%l:
输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x:
输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:
输出一个”%”字符
%F:
输出日志消息产生时所在的文件名称
%L:
输出代码中的行号
%m:
输出代码中指定的消息,产生的日志具体信息
%n:
输出一个回车换行符,Windows平台为”
”,Unix平台为”
”输出日志信息换行
|
