文章目录 1.Log4j2 依赖项 2.log4j2.json 3.File Appender 4.Demo Apache Log4j 2 是对 Log4j 1.x 的升级,相对于其前身提供了重大改进,如性能提升、自动重新加载修改……
文
章
目
录
- 1.Log4j2 依赖项
- 2.log4j2.json
- 3.File Appender
- 4.Demo
Apache Log4j 2 是对 Log4j 1.x 的升级,相对于其前身提供了重大改进,如性能提升、自动重新加载修改过的配置文件、Java 8 lambda 支持和自定义日志级别。
除了 XML 和 properties文件,Log4j2 还可以使用 JSON 进行配置。
1.Log4j2 依赖项
要将 Log4j2 包含到项目中,请包括以下依赖项。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
Log4j2 使用 Jackson 来解析 JSON 文件,因此让我们添加它的依赖项。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.15.0</version>
</dependency>
2.log4j2.json
您可以使用下面的 src/main/resources/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\"
}
}
}
}
}
3.File Appender
您可以使用下面的 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\"
}
}
}
}
}
4.Demo
让我们编写一个 Java 类并写一些日志语句来验证日志是否出现在控制台和日志文件中。
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.howtodoinjava.log4j2.examples.Log4j2HelloWorldExample.main
(Log4j2HelloWorldExample.java:14) [classes/:?]
还没有评论呢,快来抢沙发~