Log4j2下载
下载地址:http://logging.apache.org/log4j/2.x/download.html
java项目使用Log4j2
1. 导入log4j-core-2.10.0.jar和log4j-api-2.10.0.jar
2.新建log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} %level : %msg %l%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="mylog" level="info" additivity="false">
<AppenderRef ref="Console" />
</Logger>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
以Configuration为根节点,有一个status属性,这个属性表示log4j2本身的日志信息打印级别。
如果把status改为TRACE再执行测试代码,可以看到控制台中打印了一些log4j加载插件、组装logger等调试信息。
日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。对于Loggers中level的定义同样适用。
下面是Appender配置,Appender可以理解为日志的输出目的地,这里配置了一个类型为Console的Appender,也就是输出到控制台。Console节点中的PatternLayout定义了输出日志时的格式:
%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称,因为Root Logger没有名称,所以没有输出
%msg 日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如Client.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数
一般设置为:
pattern="%d{HH:mm:ss} %level : %msg %l%n"
即可
3.测试
public class Main {
static Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
public static void main(String[] args) {
logger.info("信息");
logger.warn("警告");
logger.error("错误");
}
}
输出:
13:47:13 INFO : 信息 log4j.Main.main(Main.java:9)
13:47:13 ERROR : 错误 log4j.Main.main(Main.java:11)
13:47:13 WARN : 警告 log4j.Main.main(Main.java:12)
web项目下使用Log4j2
1.导入log4j-core-2.10.0.jar和log4j-api-2.10.0.jar
2.新建log4j2.xml与java项目中一样
3.web.xml下添加
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>/WEB-INF/conf/log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
(好像webapp3.0不加也可以,测试中并没有在web.xml下加入这段话,运行也没问题)
(详细讲解:http://blog.csdn.net/autfish/article/details/51203709)