
在Spring Boot中默认提供了Logback作为日志记录框架,但同时SpringBoot中支持了其他日志框架,例如JCL(Jakarta Commons Logging)、SLF4J(Simple Logging Facade for Java)、jboss-logging、jUL(java.util.logging)等。下面就来分析下下Spring Boot中如何使用Logback日志框架和Log4j日志框架。
Logback日志框架
Logback日志框架,作为Log4j的改进版本,具有比Log4j更好的性能和更多的特性。所以在Spring Boot中将Logback作为了默认的日志框架。
在SpringBoot中,可以通过properties配置文件来对Logback进行相关的配置,例如对日志的级别,Appender、输出格式等等内容。除此之外,Spring Boot还提供了相关的API,方便开发者可以快速的动态进行日志的调整。

Log4j日志框架
Log4j是Apache开源的日志框架,提供了非常强大的日志记录功能,虽然目前Log4j已经停止了维护,但是在很多大厂,在很多的大型项目中还是会用到Log4j。
与Logback相比,Log4j的相关配置可能更为复杂,需要通过log4j.xml的配置文件进行配置,并且如果要使用到其他的相关组件配置就相对更加麻烦了。所以在一般的开发中SpringBoot中的Logback日志框架一般没有人会去改变,除非是一些用习惯了的开发者。
那么在Spring Boot中到底如何使用这两种框架呢?
SpringBoot自定义日志实现
添加日志依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
创建自定义日志记录器
在类中,使用 SLF4J API 或 Log4j2 API 来创建日志记录器。
SLF4J API
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyService {
private static final Logger logger =
LoggerFactory.getLogger(MyService.class);
public void myMethod() {
logger.info("This is an info message");
logger.error("This is an error message",
new Exception("Error details"));
}
}
Log4j API
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyService {
private static final Logger logger =
LogManager.getLogger(MyService.class);
public void myMethod() {
logger.info("This is an info message");
logger.error("This is an error message",
new Exception("Error details"));
}
}
如何自定义日志配置
如果在src/main/resource目录中下添加logback.xml的配置文件,或者是logback-spring.xml的配置文件,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.example.myapp" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</configuration>
在代码中分别对appender、logger、root logger等配置进行了配置。如果使用的是log42.xml也是一样的配置。
如何引入自定义的配置?
如果使用的是logback或者是log4j2。那么默认就是logback-spring.xml或者是log4j2.xml的配置文件,Spring Boot在启动的时候会默认加载这个配置文件,按照这个配置文件中的内容进行日志的配置。但是如果用了其他的配置,或者是指定的位置不在默认的路径下。这种情况下就需要在配置文件中进行配置了。如下所示。
logging.config=classpath:logback-custom.xml
总结
通过以上配置和代码示例,你可以更好地管理和优化 Spring Boot 应用程序中的日志记录,以满足不同的需求。记得根据实际情况调整日志级别、格式和策略,以确保日志的可用性和性能。