0


Java日志Log4j与@Slf4j注解

Log4j 是一个功能强大且灵活的日志框架,广泛用于Java应用程序中。Log4j 允许开发人员在应用程序中记录各种级别的日志信息,以帮助调试、监控和分析程序的运行情况。以下是对Log4j的详细介绍及其使用方法。

Log4j 的主要概念

  1. Logger:负责记录日志的对象。可以在应用程序的任何地方创建并使用。
  2. Appender:负责将日志信息输出到指定的目标,如控制台、文件、数据库等。
  3. Layout:定义日志信息的格式,决定日志记录的输出样式。

Log4j 的依赖引入

以Maven为例,以下是引入Log4j依赖的方式:

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

配置Log4j

Log4j 可以通过配置文件进行配置,常见的配置文件有

log4j.properties

log4j.xml

。下面分别介绍这两种配置方式。

使用 log4j.properties

创建一个名为

log4j.properties

的文件,放在资源目录中:

# 根Logger的配置
log4j.rootLogger=INFO, stdout, file

# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 文件输出配置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/app.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
使用 log4j.xml

创建一个名为

log4j.xml

的文件,放在资源目录中:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configuration><!-- 根Logger的配置 --><appendername="stdout"class="org.apache.log4j.ConsoleAppender"><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/></layout></appender><appendername="file"class="org.apache.log4j.RollingFileAppender"><paramname="File"value="logs/app.log"/><paramname="MaxFileSize"value="10MB"/><paramname="MaxBackupIndex"value="5"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/></layout></appender><root><priorityvalue="INFO"/><appender-refref="stdout"/><appender-refref="file"/></root></log4j:configuration>

使用Log4j记录日志

  1. 获取Logger实例: 在需要记录日志的类中,获取Logger实例。通常使用类的全限定名作为Logger的名称。importorg.apache.log4j.Logger;publicclassMyClass{privatestaticfinalLogger logger =Logger.getLogger(MyClass.class);publicvoiddoSomething(){ logger.info("This is an info message"); logger.debug("This is a debug message"); logger.error("This is an error message");}}
  2. 记录不同级别的日志: Log4j提供了多种日志级别的方法,开发人员可以根据日志的重要性选择合适的级别。logger.trace("This is a trace message");logger.debug("This is a debug message");logger.info("This is an info message");logger.warn("This is a warning message");logger.error("This is an error message");

Log4j的日志级别

Log4j 提供了以下日志级别,从高到低依次为:

  1. FATAL:记录非常严重的错误,导致程序中止运行。
  2. ERROR:记录错误事件,但程序可以继续运行。
  3. WARN:记录可能会出现问题的警告信息。
  4. INFO:记录一般信息,描述程序的运行状态。
  5. DEBUG:记录详细信息,用于调试。
  6. TRACE:记录更为详细的信息,通常用于跟踪程序的执行流程。

Log4j 本身并不直接支持注解方式来记录日志,但可以通过结合 Lombok 项目来实现类似的功能。Lombok 提供了一些方便的注解来自动生成代码,其中包括日志记录的注解。以下是一个使用 Lombok 提供的

@Slf4j

注解来实现 Log4j 日志记录的示例:

步骤 1:引入依赖

使用 Maven 项目,需要在

pom.xml

文件中引入 Lombok 和 Log4j 的依赖:

<dependencies><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope></dependency><!-- Log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- SLF4J API for Lombok logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><!-- SLF4J Log4j binding --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency></dependencies>

步骤 2:配置 Log4j

创建一个

log4j.properties

文件来配置 Log4j:

# 根Logger的配置
log4j.rootLogger=INFO, stdout, file

# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 文件输出配置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/app.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

步骤 3:使用

@Slf4j

注解

在你的Java类中使用

@Slf4j

注解来自动生成 Logger 实例并记录日志:

importlombok.extern.slf4j.Slf4j;@Slf4jpublicclassMyClass{publicvoiddoSomething(){
        log.info("This is an info message");
        log.debug("This is a debug message");
        log.error("This is an error message");}publicstaticvoidmain(String[] args){MyClass myClass =newMyClass();
        myClass.doSomething();}}

说明

  • @Slf4j 注解:Lombok 提供的注解,用于自动生成名为 log 的 SLF4J Logger 实例。
  • doSomething 方法中,使用 log 实例记录不同级别的日志信息。
标签: java log4j 单元测试

本文转载自: https://blog.csdn.net/xuxinan88888/article/details/139267424
版权归原作者 温哥华小趴菜 所有, 如有侵权,请联系我们删除。

“Java日志Log4j与@Slf4j注解”的评论:

还没有评论