log4j使用教程详解(怎么使用log4j2)
介绍
log4j是一个Java语言的日志记录工具,可以对程序进行日志记录,允许程序员控制日志记录输出的目的地、日志记录内容等。log4j2是log4j的升级版。本文将详细讲解如何使用log4j2。
步骤
1. 引入log4j2到项目中
在工程目录下找到 pom.xml
或 gradle.build
文件,在文件中添加log4j2的依赖。
- Maven
xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
- Gradle
groovy
dependencies {
implementation 'org.apache.logging.log4j:log4j-api:2.14.1'
implementation 'org.apache.logging.log4j:log4j-core:2.14.1'
}
2. 初始化log4j2
在工程中,创建日志配置文件并进行初始化。在 src
目录下创建 log4j2.xml
文件,具体配置可根据需要更改。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
</Console>
<RollingFile name="RollingFile"
fileName="./logs/rolling.log"
filePattern="./logs/$${date:yyyy-MM}/rolling-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB"/>
<TimeBasedTriggeringPolicy modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
创建一个Java类,用来测试log4j2是否初始化成功,代码如下:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TestLog4j2 {
private static final Logger logger = LogManager.getLogger(TestLog4j2.class);
public static void main(String[] args) {
logger.info("log4j2 initialized successfully.");
}
}
运行 main
方法,控制台输出 log4j2 initialized successfully.
表示初始化成功。
3. 使用log4j2进行日志输出
在代码中加入日志,通过 Logger
的不同方法输出日志。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TestLog4j2 {
private static final Logger logger = LogManager.getLogger(TestLog4j2.class);
public static void main(String[] args) {
logger.debug("debug log");
logger.info("info log");
logger.warn("warn log");
logger.error("error log");
logger.fatal("fatal log");
}
}
在控制台输出的日志中,日志级别低于 info
的日志不会被输出,可以看到如下输出结果:
2021-07-22 16:38:52 INFO TestLog4j2:9 - info log
2021-07-22 16:38:52 WARN TestLog4j2:10 - warn log
2021-07-22 16:38:52 ERROR TestLog4j2:11 - error log
2021-07-22 16:38:52 FATAL TestLog4j2:12 - fatal log
4. 输出到指定文件
除了控制台,我们可以通过配置,在指定的文件中输出日志。配置中已经有一个输出到文件的 Appender,文件名为 rolling.log
,存储在当前工程目录下的 logs
文件夹内。每天会自动新建一个以日期为名的日志文件,并且保留20个日志文件。
可以增加一个方法,在输出日志的同时,将日志保存到文件中。
public static void logToFile() {
for (int i = 0; i < 10; i++) {
logger.info("log to file " + i);
}
}
运行 logToFile()
方法,可以看到输出日志的同时,在文件中也保存了日志。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:log4j使用教程详解(怎么使用log4j2) - Python技术站