原文: https://howtodoinjava.com/log4j2/log4j2-properties-example/

学习配置log4j2.properties文件,以将日志语句输出到控制台,滚动文件等。学习配置 log4j2 附加器,级别和模式。

Apache Log4j2 是 Log4j 1.x 的升级版,对它的前身进行了重大改进,例如性能提高,自动重新加载已修改的配置文件, Java8 lambda 支持和自定义 日志级别

1. Log4j2 Maven 依赖项

要包含 Log4j2 ,请在项目中包含以下 maven 依赖项。

  1. <dependency>
  2. <groupId>org.apache.logging.log4j</groupId>
  3. <artifactId>log4j-api</artifactId>
  4. <version>2.6.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.logging.log4j</groupId>
  8. <artifactId>log4j-core</artifactId>
  9. <version>2.6.1</version>
  10. </dependency>

2. log4j2.properties – 控制台日志记录

我们可以使用下面的log4j2.properties文件将日志输出到控制台。 请注意,如果找不到配置文件,则将使用DefaultConfigurationLog4j2 默认日志记录还将日志输出到控制台。

  1. status = error
  2. name = PropertiesConfig
  3. filters = threshold
  4. filter.threshold.type = ThresholdFilter
  5. filter.threshold.level = debug
  6. appenders = console
  7. appender.console.type = Console
  8. appender.console.name = STDOUT
  9. appender.console.layout.type = PatternLayout
  10. appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  11. rootLogger.level = debug
  12. rootLogger.appenderRefs = stdout
  13. rootLogger.appenderRef.stdout.ref = STDOUT

3. log4j2.properties – 滚动文件附加器

我们可以使用下面的log4j2.properties文件将日志输出到基于日期的滚动文件

  1. status = error
  2. name = PropertiesConfig
  3. #Make sure to change log file path as per your need
  4. property.filename = C:\\logs\\debug.log
  5. filters = threshold
  6. filter.threshold.type = ThresholdFilter
  7. filter.threshold.level = debug
  8. appenders = rolling
  9. appender.rolling.type = RollingFile
  10. appender.rolling.name = RollingFile
  11. appender.rolling.fileName = ${filename}
  12. appender.rolling.filePattern = debug-backup-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
  13. appender.rolling.layout.type = PatternLayout
  14. appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
  15. appender.rolling.policies.type = Policies
  16. appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
  17. appender.rolling.policies.time.interval = 1
  18. appender.rolling.policies.time.modulate = true
  19. appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
  20. appender.rolling.policies.size.size=10MB
  21. appender.rolling.strategy.type = DefaultRolloverStrategy
  22. appender.rolling.strategy.max = 20
  23. loggers = rolling
  24. #Make sure to change the package structure as per your application
  25. logger.rolling.name = com.howtodoinjava
  26. logger.rolling.level = debug
  27. logger.rolling.additivity = false
  28. logger.rolling.appenderRef.rolling.ref = RollingFile

4. log4j2.properties文件路径

我们应该将log4j2.properties放在应用的类路径中的任何位置。 Log4j2 将扫描所有类路径位置以查找此文件,然后将其加载。

Log4j2 属性文件示例 - 图1

Log4j2.properties文件位置

5. log4j2 属性文件示例

让我们写一个 Java 类并写一些日志语句来验证日志是否也出现在控制台和日志文件中。

  1. package com.howtodoinjava.log4j2.examples;
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Logger;
  4. public class Log4j2HelloWorldExample
  5. {
  6. private static final Logger LOGGER = LogManager.getLogger(Log4j2HelloWorldExample.class.getName());
  7. public static void main(String[] args)
  8. {
  9. LOGGER.debug("Debug Message Logged !!!");
  10. LOGGER.info("Info Message Logged !!!");
  11. LOGGER.error("Error Message Logged !!!", new NullPointerException("NullError"));
  12. }
  13. }

现在,当您运行上述程序时,您将在控制台中获得以下日志。

  1. 2016-06-16 13:41:27 DEBUG Log4j2HelloWorldExample:12 - Debug Message Logged !!!
  2. 2016-06-16 13:41:27 INFO Log4j2HelloWorldExample:13 - Info Message Logged !!!
  3. 2016-06-16 13:41:27 ERROR Log4j2HelloWorldExample:14 - Error Message Logged !!!
  4. java.lang.NullPointerException: NullError
  5. at com.howtodoinjava.log4j2.examples.Log4j2HelloWorldExample.main(Log4j2HelloWorldExample.java:14)
  6. [classes/:?]

学习愉快!