日志框架之Log4j 2
2022-07-15 本文已影响0人
Tinyspot
Log4j2
- https://logging.apache.org/log4j/2.x/
- Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback's architecture.
- 插件模式
- Logger logger = LoggerFactory.getLogger(Demo2.class);
执行原理
SLF4J 门面调用 Log4j 2 门面,Log4j 2 门面调用 Log4j 2 实现
可单独使用 log4j2 Logger logger = LogManager.getLogger(Demo2.class);
但建议用门面方式
虽然 Log4j 2 也是日志门面,但它的日志实现功能也很强大,一般用作日志实现,门面用 SLF4J
log4j-api: 日志门面
log4j-core: 日志实现
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.18.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.18.0</version>
</dependency>
</dependencies>
2. 核心概念
- LoggerContext: log的上下文环境
- Configuration: 每一个 LoggerContext 都有一个有效的 Configuration
- Logger
- LoggerConfig 记录日志
3. log4j2.xml
- Log4j 2 格式参考的是 logback, 但标签名首字母都是大写字母开头
3.1 Layouts
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Properties>
<property name="fileDir">/Users/xingxing.xiao/Downloads</property>
</Properties>
<Appenders>
<Console name="consoleAppender" target="SYSTEM_ERR">
<PatternLayout pattern="%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n" />
</Console>
<File name="fileAppender" fileName="${fileDir}/log4j2.log">
<PatternLayout pattern="%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n" />
</File>
<!-- $${date:yyyy-MM-dd} 指定文件夹 -->
<RollingFile name="rollingFileAppender" fileName="${fileDir}/log.log" filePattern="${fileDir}/$${date:yyyy-MM-dd}/log-%d{yyyy-MM-dd-HH-mm}-%i.log">
<PatternLayout pattern="%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="10KB" />
</Policies>
<DefaultRolloverStrategy max="30" /> <!-- 同一目录下文件数量限制 -->
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="consoleAppender" />
<AppenderRef ref="fileAppender" />
<AppenderRef ref="rollingFileAppender" />
</Root>
</Loggers>
</Configuration>