以下是“在Java下利用log4j记录日志的方法”的完整攻略:
一、前置条件
在开始之前,我们需要确保已经完成以下操作:
- 已经安装了Java开发环境,推荐使用JDK 1.8及以上版本。
- 已经下载了log4j的相关 jar 包,可以从官网上下载或者使用Maven等构建工具导入相关依赖。
- 熟悉基本的Java编程知识,了解日志概念。
二、添加log4j相关依赖
在项目的pom.xml中添加以下依赖:
<dependencies>
<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>
</dependencies>
三、编写配置文件
在项目的src/main/resources目录下,新建一个名为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.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<RollingFile name="rollingFile" fileName="./logs/app.log"
filePattern="./logs/app-%d{yyyy-MM-dd}.log.gz">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<!-- 匹配类名以com.baeldung打头的日志记录器,并将日志级别设置为DEBUG -->
<Logger name="com.baeldung" level="DEBUG">
<AppenderRef ref="Console" />
<AppenderRef ref="rollingFile" />
</Logger>
<Root level="INFO">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
以上配置文件的意思是,记录日志时会把日志分别输出到控制台和文件中,日志级别为DEBUG。同时,日志也会根据时间进行滚动。
四、编写Java代码
在Java代码中引入log4j,创建日志记录器:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App {
private static final Logger logger = LogManager.getLogger(App.class);
public static void main(String[] args) {
logger.info("Hello, Log4j!");
logger.warn("This is a warning message");
logger.error("This is an error message");
}
}
五、说明示例
示例1
public class UserService {
private static final Logger logger = LogManager.getLogger(UserService.class);
public void saveUser(User user) {
try {
// 保存用户信息
} catch (Exception e) {
logger.error("save user failed", e);
}
}
}
我们在UserService类中记录了一个错误日志,在记录错误日志时需要将异常信息作为参数传入,这样才能够完整记录错误日志的信息。
示例2
public class UserController {
private static final Logger logger = LogManager.getLogger(UserController.class);
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
User user = userService.getUserById(id);
if (user == null) {
logger.warn("user not found: {}", id);
}
return user;
}
}
我们在UserController类中记录了一个警告日志,在记录警告日志时使用占位符{}可以记录更多的信息,比如本例中记录了请求的用户ID。这样会让记录更加完整详细。
以上就是在Java中使用log4j记录日志的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Java下利用log4j记录日志的方法 - Python技术站