栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot中如何使用日志框架logback和log4j2?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot中如何使用日志框架logback和log4j2?

说明

在这个简短的教程中,我们将探索 Spring Boot 中可用的主要日志记录选项:logback和log4j2

初始设置

使用 starters 时,默认使用 Logback 进行日志记录。
让我们首先创建一个 Spring Boot 模块。

添加依赖


    org.springframework.boot
    spring-boot-starter-web

新建类

@RestController
public class LoggingController {

    Logger logger = LoggerFactory.getLogger(LoggingController.class);

    @RequestMapping("/")
    public String index() {
        logger.trace("A TRACE Message");
        logger.debug("A DEBUG Message");
        logger.info("An INFO Message");
        logger.warn("A WARN Message");
        logger.error("An ERROR Message");

        return "Howdy! Check out the Logs to see the output...";
    }
}

一旦我们加载了 Web 应用程序,我们就可以通过简单地访问http://localhost:8080/来触发这些日志记录行。

Spring Boot 使用模式和 ANSI 颜色对其进行预配置,以使标准输出更具可读性。
现在让我们运行应用程序并访问http://localhost:8080/页面,看看控制台中发生了什么。

我们可以看到,Logger 的默认日志级别预设为 INFO,这意味着TRACE和DEBUG消息是不可见的。

为了在不更改配置的情况下激活它们,我们可以在命令行上传递–debug或–trace参数:

java -jar target/spring-boot-logging-0.0.1-SNAPSHOT.jar --trace
日志级别

Spring Boot 还允许我们通过环境变量访问更细粒度的日志级别设置。有几种方法可以实现这一点。

首先,我们可以在 VM 选项中设置日志记录级别:

-Dlogging.level.org.springframework=TRACE 
-Dlogging.level.com.test.java=TRACE

或者,如果我们使用 Maven,我们可以 通过命令行定义我们的日志设置:

mvn spring-boot:run 
  -Dspring-boot.run.arguments=--logging.level.org.springframework=TRACE,--logging.level.com.test.java=TRACE

使用 Gradle 时,我们可以通过命令行传递日志设置。这将需要设置bootRun任务。

完成后,我们运行应用程序:

./gradlew bootRun -Pargs=--logging.level.org.springframework=TRACE,--logging.level.com.test.java=TRACE

如果我们想永久更改详细程度,我们可以在application.properties文件中这样做,如下所述:

logging.level.root=WARN
logging.level.com.baeldung=TRACE

最后,我们可以使用我们的日志框架配置文件永久更改日志级别。

我们提到 Spring Boot Starter 默认使用 Logback。让我们看看如何定义一个 Logback 配置文件的片段,我们在其中为两个单独的包设置级别:



请记住,如果 使用上述不同选项多次定义包的日志级别,但使用不同的日志级别,将使用最低级别。

因此,如果我们同时使用 Logback、Spring Boot 和环境变量设置日志级别,那么日志级别将是TRACE,因为它是请求级别中最低的。

配置logback

尽管默认配置也挺好用,但无法满足我们实际企业对于生产环境中的日志记录。
比如:自定义的日志格式、日志输出基本、日志文件保存策略等等,为此我们需要自定义一份日志设置文件。
Spring Boot 启动时候会去类路径下按顺序查找以下配置文件:

logback-spring.xmllogback.xmllogback-spring.groovylogback.groovy

此处,我们在resources目录下新建logback-spring.xml,内容如下:




    

    
        
            
                %green(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            
        
    

    
        ${LOGS}/spring-boot-logger.log
        
            %d %p %C{1.} [%t] %m%n
        

        
            
            ${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
    

    
    
        
        
    

    
    
        
        
    


再次启动项目访问后,查看输出如下:

正如我们所看到的,它现在记录了TRACE和DEBUG消息,并且整个控制台模式在文本和色彩上都与以前不同。

它现在还登录在当前路径下创建的/logs文件夹中的文件,并通过滚动策略将其存档。

使用log4j2

除了使用默认的logback我们还推荐使用log4j2,从先进性上面来讲log4j2更胜一筹。
首先我们需要调整以下pom依赖:


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-log4j2

此时,我们需要在类路径中放置一个配置文件,名称可以是下面这样:

log4j2-spring.xmllog4j2.xml

我们将通过 Log4j2(通过 SLF4J)打印,无需进一步修改。
让我们编写一个简单的log4j2-spring.xml:




    

    
        
            
                %green(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            
        
    

    
        ${LOGS}/spring-boot-logger.log
        
            %d %p %C{1.} [%t] %m%n
        

        
            
            ${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            
            
                10MB
            
        
    

    
    
        
        
    

    
    
        
        
    


再编写一个测试类:

@RestController
@Slf4j
public class LombokLoggingController {

    @RequestMapping("/dolog4j")
    public String index(){
        log.trace("A TRACE Message");
        log.debug("A DEBUG Message");
        log.info("An INFO Message");
        log.warn("A WARN Message");
        log.error("An ERROR Message");

        return "Howdy! Check out the Logs to see the output...";
    }
}

启动程序访问后的日志输出如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号