SpringBoot应用自定义logback日志详解

概述

默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置文件logback-spring.xml或者logback.xml。本篇文章主要讲解下如何自定义logabck.xml以及对logback文件中配置做一个详解。

logback配置详解

首先我们先了解下logback。

logback 主要分为三个模块:

  • logback-core:是其他两个模块的基础模块
  • logback-classic:是对 core 模块的扩展,相当于 log4j 的改良版。classic 模块实现了 Slf4j 的 API 因此可以便于和其他日志框架直接切换
  • logback-access:与Servlet容器集成,以提供http访问日志功能。

官网配置文档地址:https://logback.qos.ch/manual/configuration.html

配置内容概念介绍

Logger Context

LoggerContext负责制造logger,也负责以树结构排列各logger。其他所有logger也通过org.slf4j.LoggerFactory 类的静态方法getLogger取得。 getLogger方法以 logger名称为参数。

Logger

Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。

Appender

Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。

Layout

负责把事件转换成字符串,格式化的日志信息的输出。

配置介绍

配置文件的基本结构:以开头,后面有零个或多个元素,有零个或多个元素,有最多一个元素。

默认配置的步骤

  • 尝试在 classpath下查找文件logback-test.xml;
  • 如果文件不存在,则查找文件logback.xml;
  • 如果两个文件都不存在,logback用BasicConfigurator自动对自己进行配置,这会导致记录输出到控制台。



    
    
    
    
    
    
    
    
    
      
    
    
    
    
    
    ${CONTEXT_NAME}
    
    
        
        
            ${CUSTOM_LOG_PATTERN}
            UTF-8
        
    
    
        
        
            log/testC.%d{yyyy-MM-dd}.%i.log
            
            30
            
            
                100MB
            
        
        
        
        
            
            WARN
            
            ACCEPT
            
            DENY
        
        
        
            ${CUSTOM_LOG_PATTERN}
            UTF-8
        
    
	
    
        
        ${logs.dir}/logback-test.log
        
        
            
            ${logs.dir}/logback-test.%i.log
            
            1
            
            3
        
        
        
            
            INFO
            
            ACCEPT
            
            DENY
        
        
        
            
            30MB
        
        
        
            ${CUSTOM_LOG_PATTERN}
            UTF-8
        
    
	
    
    
        
        
        
        
        
        
    
    
    
    
        
    
    
    
        
        
        
        
            
                
            
        
        
    

SpringBoot中自定义logback

SpringBoot启用自定义logback有3种方式:

  • classpath下存在logback-spring.xml
  • classpath下有logback.xml
  • 配置文件中通过配置项指定文件:logging.config: ./logback-rule.xml

如果可能,我们建议您为日志记录配置使用-spring变体或者通过配置项的方式(例如,logback-spring.xml而不是logback.xml)。如果使用标准配置,Spring不能完全控制日志初始化。

我们本例使用logback-spring.xml作为配置文件演示。

在 src/main/resources 下创建 logback-spring.xml 文件,分开记录系统输出日志和Error日志。



    
    
    
    
    

    
    
    
    

    
    
        
            ${CONSOLE_LOG_PATTERN}
        
    

    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        
        
        
            
            ${DEV_FILE_PATH}/output-%d{yyyy-MM-dd}.%i.log
            
            
            10MB
            
            60
            a
            2GB
        
    

    
    
        
        
            ERROR
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        
        
        
            
            ${DEV_FILE_PATH}/error-%d{yyyy-MM-dd}.%i.log
            
            10MB
            60
            2GB
        
    

    
        
        
        
    

java中打印日志:

@SpringBootApplication
@Slf4j
public class LogbackApp {

    public static void main(String[] args) {
        SpringApplication.run(LogbackApp.class, args);

        log.trace("Trace 日志...");
        log.debug("Debug 日志...");
        log.info("Info 日志...");
        log.warn("Warn 日志...");
        log.error("Error 日志...");
    }
}

输出结果:

SpringBoot应用自定义logback日志详解_第1张图片

SpringBoot应用自定义logback日志详解_第2张图片

SpringBoot官方建议使用logback-spring.xml作为logback框架的自定义日志配置文件,使用logback-spring.xml而不是logback.xml,因为带-spring后缀的配置文件可以使用一些扩展的功能。

多环境输出日志文件

Logback 配置文件中的 节点指令允许您根据配置文件激活参数(active) 选择性的包含和排查部分配置信息。根据不同环境来定义不同的日志输出,在 logback-spring.xml中使用 节点来定义,方法如下:


    
        
            
            
            
        
    
 
    
    
        
            
            
            
        
    

配置文件添加配置项:

SpringBoot应用自定义logback日志详解_第3张图片

结果:

打印出了debug日志,说明dev的配置生效了。

读取配置文件配置

本文通过读取配置文件中的配置修改输出的日志文件名来演示。

1.配置文件中添加配置项

SpringBoot应用自定义logback日志详解_第4张图片

2.logback-spring.xml中添加配置内容如下:


  • scope: 使用范围
  • name: 变量名
  • source: 读取的配置项名
  • defaultValue: 默认名称

3.通过${....}使用配置

SpringBoot应用自定义logback日志详解_第5张图片

4.结果,成功修改了输出的日志文件名

SpringBoot应用自定义logback日志详解_第6张图片

文章代码地址:https://github.com/alvinlkk/springboot-demo/tree/master/springboot-log-logback

以上就是SpringBoot应用自定义logback日志详解的详细内容,更多关于SpringBoot应用自定义logback日志的资料请关注脚本之家其它相关文章!

你可能感兴趣的:(SpringBoot应用自定义logback日志详解)