如何使用slf4j记录日志

slf4j是Java里面用来记录日志的工具。本身并不实现任何记录日志的功能,里面只是接口或者抽象类。

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time

在开始使用前,SLF4J 提供了一个用户手册,写的很详细,SLF4J Manual 大家可以查阅。下面的内容也是对手册的一些节选和编辑。

1、如果想使用slf4j,首先需要在项目的lib下添加slf4j-api-1.7.33.jar ,这是目前(2022年1月19日)slf4j最稳定的版本。文件里面提供了记录日志所需的所有方法。这个文件的下载地址如下:https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.33/slf4j-api-1.7.33.jar

2、接下来就要考虑你当前所使用的具体日志工具是什么,e.g. java.util.logging, logback, log4j,根据不同的工具,slf4j提供了不同的binding文件。

slf4j-log4j12-1.7.33.jar

Binding/provider for log4j version 1.2, a widely used logging framework. You also need to place log4j.jar on your class path. Assuming you wish to continue to use the log4j 1.x framework, given that the log4j 1.x has reached EOL status, we strongly encourage you to use slf4j-reload4j instead. See below.

slf4j-reload4j-1.7.33.jar

SINCE 1.7.33 Binding/provider for reload4j framework. Reload4j is a drop-in replacement for log4j version 1.2.7. You also need to place reload4j.jar on your class path.

slf4j-jdk14-1.7.33.jar

Binding/provider for java.util.logging, also referred to as JDK 1.4 logging

slf4j-nop-1.7.33.jar

Binding/provider for NOP, silently discarding all logging.

slf4j-simple-1.7.33.jar

Binding/provider for Simple implementation, which outputs all events to System.err. Only messages of level INFO and higher are printed. This binding may be useful in the context of small applications.

slf4j-jcl-1.7.33.jar

Binding/provider for Jakarta Commons Logging. This binding will delegate all SLF4J logging to JCL.

logback-classic-1.2.10.jar (requires logback-core-1.2.10.jar)

NATIVE IMPLEMENTATION There are also SLF4J bindings/providers external to the SLF4J project, e.g. logback which implements SLF4J natively. Logback's ch.qos.logback.classic.Logger class is a direct implementation of SLF4J's org.slf4j.Logger interface. Thus, using SLF4J in conjunction with logback involves strictly zero memory and computational overhead.

下面以reload4j为例(什么是reload4j,请看这里:reload4j,reload4j其实就是log4j的一个解决了安全漏洞的版本,用法和log4j一样。)在使用reload4j的情况下,需要如引用的上文所述,下载slf4j-reload4j-1.7.33.jar  这个文件的下载地址:https://repo1.maven.org/maven2/org/slf4j/slf4j-reload4j/1.7.33/slf4j-reload4j-1.7.33.jar

下载后,如第一步所作,将文件放到lib下,并添加为类库(Add as Library)

******************************************************************************************

请注意,这里reload4j是对log4j 1.x版本的修改,目前log4j已经到了2.x的版本,slf4j的官网对这个log4j 2.x没有提供binding文件,如果要使用log4j 2.x的版本,可以参看如下:SLF4J Binding Using Log4j – Log4j 2 SLF4J Binding

这里写的很清楚,照着做就行了。

******************************************************************************************

3、完成上面两步以后,其实你已经完成了slf4j的使用前提。剩下的就是部署你需要的日志记录工具。这里用的是reload4j,到maven上下载了源代码,自己编译后生成 reload4j.jar ,再次将reload4j.jar 添加到 lib中,就可以使用了。

4、配置文件,这里的配置文件不是slf4j的配置文件,而是你真正使用的日志工具的配置文件,reload4j的配置文件和log4j一样,简单记录如下,如果想了解更多的配置文件的内容请参看:

log4j.properties 详解与配置步骤_sinat_30185177的博客-CSDN博客_log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.err
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=D://log1/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://log1/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=D://log1/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://log1/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot可以很方便地整合SLF4J日志框架,只需要在pom.xml文件中添加相应的依赖即可。具体步骤如下: 1. 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` 2. 在application.properties文件中配置日志级别和输出格式,例如: ``` logging.level.root=INFO logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ``` 3. 在代码中使用SLF4J进行日志输出,例如: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyController { private static final Logger logger = LoggerFactory.getLogger(MyController.class); public void myMethod() { logger.info("This is a log message."); } } ``` 以上就是Spring Boot整合SLF4J日志的基本步骤。 ### 回答2: SLF4J是一个在Java应用程序中使用日志的简单抽象工具,它可以帮助开发者集成不同的日志框架,如logback, log4j或java.util.logging。Spring Boot作为一种流行的Java框架,提供了丰富的工具来简化应用程序的开发,其中就包括日志记录。 在Spring Boot中,将SLF4J与其他日志框架整合非常简单。首先,我们需要在pom.xml文件中添加所需的依赖项,例如: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.30</version> </dependency> </dependencies> ``` 在这个例子中,我们添加了一个简单的依赖项,该依赖项将SLF4J与默认的Simple工厂一起使用,以便在控制台上记录日志消息。 接下来,我们需要在应用程序中使用SLF4J记录日志消息。这可以通过在我们的类中添加以下代码行来完成: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RestController public class MyController { private Logger logger = LoggerFactory.getLogger(MyController.class); @GetMapping("/hello") public String sayHello() { logger.info("Hello from SLF4J"); return "Hello"; } } ``` 在这个例子中,我们首先导入了Logger和LoggerFactory类。然后,我们在我们的控制器类中添加了一个Logger实例,该实例将我们的日志记录到控制台上。最后,我们在GetMapping方法中使用该实例记录一条信息。 当我们运行我们的应用程序并访问/hello端点时,我们将在控制台上看到以下输出: ``` 2021-10-01 12:00:00.000 INFO 12345 --- [nio-8080-exec-1] com.example.demo.MyController : Hello from SLF4J ``` 这就是整合过程的简单演示。通过这个简单的例子,我们可以轻松地在Spring Boot应用程序中使用SLF4J进行日志记录。最后,使用SLF4J可以帮助我们将应用程序与日志框架进行解耦,使我们的应用程序更加灵活和可维护。 ### 回答3: Spring Boot 是一种用于创建微服务的框架,它将应用程序所需的所有配置和依赖项打包在一起,以便快速轻松地开发和部署应用程序。在 Spring Boot 中整合 SLF4J 日志系统非常简单,只需要进行以下几个步骤: 1.在 pom.xml 文件中添加所需的依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> ``` spring-boot-starter-logging 包的作用是引入 Spring Boot 应用程序的默认日志记录器 Logback,而 slf4j-api 是 SLF4J 日志系统的 API 接口,logback-classic 则是具体的日志实现。 2.在 application.properties 文件中配置日志记录器的属性: ``` # 根日志级别 logging.level.root=INFO # 控制台的日志级别 logging.level.org.springframework.web=DEBUG # 日志文件的输出路径 logging.file=/var/log/myapplication.log ``` 在上面的例子中,我们设置根日志级别为 INFO,控制台日志级别为 DEBUG,并在 /var/log/myapplication.log 文件中输出日志。 3.在代码中使用 SLF4J 记录日志: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger logger = LoggerFactory.getLogger(MyService.class); public void doSomething() { logger.debug("Doing something"); logger.info("Did something"); logger.error("Failed to do something"); } } ``` 在上面的代码中,我们使用SLF4J 的 getLogger() 方法来获取 MyService 类的日志记录器,然后使用 debug()、info() 和 error() 方法记录不同级别的日志。 通过上述步骤,我们就可以在 Spring Boot 应用程序中使用 SLF4J 记录日志了。值得注意的是,在开发调试时,可以将日志级别设置为 DEBUG,以便查看更详细的日志信息。而在生产环境中,应该将日志级别设置为 WARN 或 ERROR,以避免过多的日志输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值