一、概述
在本教程中,我们将探讨如何使用Apache Log4j2 库将消息记录到文件和控制台。
这在非生产环境中非常有用,我们可能希望在控制台中查看调试消息,并且我们可能希望将更高级别的日志保存到文件中以供以后分析。
2. 项目设置
让我们从创建一个Java 项目开始。我们将添加log4j2 依赖项并了解如何配置和使用记录器。
2.1。Log4j2 依赖
让我们将log4j2 依赖项添加到我们的项目中。我们需要Apache Log4J Core和Apache Log4J API依赖项:
<dependencies>
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-core</artifactId>
 <version>2.18.0</version>
 </dependency>
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-api</artifactId>
 <version>2.18.0</version>
 </dependency>
 </dependencies>
2.2.应用类
现在让我们使用log4j2 库向我们的应用程序添加一些日志记录:
public class Log4j2ConsoleAndFile {
 private static final Logger logger = LogManager.getLogger(Log4j2ConsoleAndFile.class);
 public static void main(String[] args) {
 logger.info("Hello World!");
 logger.debug("Hello World!");
 }
 }
3.Log4j2配置
要自动配置记录器,我们需要在类路径上有一个配置文件。它可以是JSON、XML、YAML 或属性格式。该文件应命名为log4j2。对于我们的示例,让我们使用一个名为log4j2.properties的配置文件。
3.1。登录到控制台
要登录到任何目的地,我们首先需要定义一个登录到控制台的附加程序。让我们看一下执行此操作的配置:
appender.console.type = Console
 appender.console.name = STDOUT
 appender.console.layout.type = PatternLayout
 appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
让我们了解配置的每个组件:
- appender.console.type– 在这里,我们指定将用于记录的appender 的类型。类型- Console指定appender 将只写入控制台。我们应该注意,键名中的- console这个词只是一个约定,并不是强制性的。
- appender.console.name –我们可以给出任何唯一的名称,以便以后可以用来引用这个appender。
- appender.console.layout.type– 这决定了用于格式化日志消息的布局类的名称。
- appender.console.layout.pattern– 这是用于格式化日志消息的模式。
要启用控制台记录器,我们需要将控制台附加程序添加到根记录器。我们可以使用上面指定的名称来执行此操作:
rootLogger=debug, STDOUT
使用此配置,我们会将所有debug和以上消息记录到控制台。对于在本地环境中运行的控制台,debug级别的日志记录很常见。
3.2.记录到文件
同样,我们可以将记录器配置为记录到文件中。这对于持久化日志通常很有用。让我们定义一个文件附加器:
appender.file.type = File
 appender.file.name = LOGFILE
 appender.file.fileName=logs/log4j.log
 appender.file.layout.type=PatternLayout
 appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
 appender.file.filter.threshold.type = ThresholdFilter
 appender.file.filter.threshold.level = info
对于文件附加程序,还必须指定文件名。
除此之外,我们还要设置阈值级别。由于我们正在记录到一个文件,我们不想记录所有消息,因为它会占用大量的持久存储。我们只想记录info级别或更高级别的消息。我们可以使用过滤器ThresholdFilter并设置其级别**info.**
要启用文件记录器,我们需要将文件附加程序添加到根记录器。我们需要更改rootLogger配置以包含文件appender:
rootLogger=debug, STDOUT, LOGFILE
即使我们在根级别使用了级别debug,文件记录器也只会记录info及以上消息。
4. 测试
现在让我们运行应用程序并检查控制台中的输出:
12:43:47,891 INFO Application:8 - Hello World!
 12:43:47,892 DEBUG Application:9 - Hello World!
正如预期的那样,我们可以在控制台中看到这两条日志消息。如果我们检查路径logs/log4j.log的日志文件,我们只能看到info级别的日志消息:
12:43:47,891 INFO Application:8 - Hello World!
5. 结论
在本文中,我们学习了如何将消息记录到控制台和文件中。我们创建了一个Java 项目,使用属性文件配置了Log4j2,并测试了消息是否打印到控制台和文件。

 
							 
										
										 
										
										 
										
										
										 
										
										 
										
										 
										
										
0 评论