Log4j 2 简介
Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda支持和自定义日志级别。 除了XML和properties文件,Log4j也可以使用JSON进行配置。
Log4j2依赖
将Log4j2包含在项目中,请在项目中包含以下依赖项。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.1</version>
</dependency>
Log4j2使用Jackson解析JSON文件-因此,我们还要添加Jackson的依赖项。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
log4j2.json 用于控制台日志记录输出配置
您可以使用下面的src/main/resources/log4j2.json文件将输出记录到控制台中。 请注意,如果找不到配置文件,则将使用DefaultConfiguration。 这也将导致日志记录输出进入控制台。
$title(log4j2.json)
{
"configuration": {
"status": "error",
"name": "JSONConfigDemo",
"packages": "com.howtodoinjava",
"ThresholdFilter": {
"level": "debug"
},
"appenders": {
"Console": {
"name": "STDOUT",
"PatternLayout": {
"pattern": "%d [%t] %-5p %c - %m%n"
}
}
},
"loggers": {
"root": {
"level": "debug",
"AppenderRef": {
"ref": "STDOUT"
}
}
}
}
}
log4j2.json用于滚动文件配置
$title(log4j2.json)
{
"configuration": {
"name": "Default",
"appenders": {
"RollingFile": {
"name":"File",
"fileName":"C:/logs/howtodoinjava.log",
"filePattern":"C:/logs/howtodoinjava-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
},
"Policies": {
"SizeBasedTriggeringPolicy": {
"size":"10 MB"
}
},
"DefaultRolloverStrategy": {
"max":"10"
}
}
},
"loggers": {
"root": {
"level":"debug",
"appender-ref": {
"ref":"File"
}
}
}
}
}
log4j2.json文件位置
您应该将log4j2.json放在应用程序的classpath路径中的任何位置。 Log4j2将扫描所有类路径位置以找到此文件,然后将其加载。
log4j2.json 输出日志例子
让我们编写一个Java类并编写一些日志语句,以验证日志是否也出现在控制台和日志文件中。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4j2HelloWorldExample
{
private static final Logger LOGGER = LogManager.getLogger(Log4j2HelloWorldExample.class.getName());
public static void main(String[] args)
{
LOGGER.debug("Debug Message Logged !!!");
LOGGER.info("Info Message Logged !!!");
LOGGER.error("Error Message Logged !!!", new NullPointerException("NullError"));
}
}
现在,在你运行上述程序时,你将在控制台中获得以下日志。
2016-06-16 15:06:25 DEBUG Log4j2HelloWorldExample:12 - Debug Message Logged !!!
2016-06-16 15:06:25 INFO Log4j2HelloWorldExample:13 - Info Message Logged !!!
2016-06-16 15:06:25 ERROR Log4j2HelloWorldExample:14 - Error Message Logged !!!
java.lang.NullPointerException: NullError at com.leftso.log4j2.examples.Log4j2HelloWorldExample.main
(Log4j2HelloWorldExample.java:14) [classes/:?]
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/243802.html