记录一次@Slf4j log.info 日志信息未输出到日志文件的问题

Spring Boot的起步依赖(如spring-boot-starter-web)中已经包含了Slf4j的依赖,无需额外添加。:

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

当你在项目中添加了spring-boot-starter-web依赖后,它将自动引入以下关键组件和依赖项:

  • Spring MVC:用于构建Web应用程序的模型-视图-控制器(Model-View-Controller)框架。
  • Tomcat(或其他嵌入式Web服务器):用于运行和部署Web应用程序。
  • Spring Web:提供Web开发所需的核心功能,如请求处理、过滤器、异常处理等。
  • Jackson(或其他JSON处理库):用于处理JSON数据的序列化和反序列化。
  • 其他辅助依赖项:包括Servlet API、Spring Boot自动配置等。

通过添加spring-boot-starter-web依赖,你可以方便地构建和开发基于Spring Boot的Web应用程序。它提供了必要的组件和配置,使你能够处理HTTP请求、定义控制器、处理表单提交、返回JSON或HTML响应等。

spring-boot-starter-web依赖中已经集成了日志框架。在Spring Boot中,默认使用的是SLF4J(Simple Logging Facade for Java)作为日志抽象层,并且使用Logback作为默认的日志实现。

SLF4J是一个日志抽象层,它提供了统一的日志接口,可以与多个具体的日志实现框架进行集成。而Logback是SLF4J的一个实现,它提供了强大的日志功能和灵活的配置选项。

当你添加了spring-boot-starter-web依赖后,它会自动引入spring-boot-starter-logging依赖,该依赖会将SLF4J和Logback集成到你的项目中。这意味着你可以直接在代码中使用SLF4J的API进行日志记录,而无需额外的配置。

在项目中添加 logback-spring.xml 文件,如下所示:








    logback

    
    


    
    
    
    
    
    
    

    
    
        
        
            debug
        
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    


    
    
    
        
        ${log.path}/web_debug.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        
            
            ${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            debug
            ACCEPT
            DENY
        
    


    
    
        
        ${log.path}/web_info.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            
            ${log.path}/web-info-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            15
        
        
        
            info
            ACCEPT
            DENY
        
    


    
    
        
        ${log.path}/web_warn.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        
            ${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            5
        
        
        
            warn
            ACCEPT
            DENY
        
    



    
    
        
        ${log.path}/web_error.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        
            ${log.path}/web-error-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            30
        
        
        
            ERROR
            ACCEPT
            DENY
        
    



    

    

    
    
    

    
    


        

        
             
             
             
             
             
        
    

    
    
        
        
        
        
            
            
            
            
            
        
    


在业务代码中对需要加日志的类添加注解  @Slf4j

在具体需要加日志的地方,按需使用如下语句,等级依次是从低到高

//日志等级为 debug
log.debug("我的测试接口,参数为: {}",params);

//日志等级为 info
log.info("我的测试接口,参数为: {}",params);

//日志等级为warn
log.warn("我的测试接口,参数为: {}",params);

//日志等级为error
log.error("我的测试接口,参数为: {}",params);

配置文件不论是使用 bootstrap.yml 还是application.yml,均需要指定环境,需和 logback-spring.xml 中 springProfile 配置的name匹配,会选择指定的日志等级

    
       ...

    
spring:
  profiles:
    active: dev

在Spring Cloud项目中,bootstrap.yml的优先级比application.yml更高。

bootstrap.yml是在Spring应用程序启动的早期加载的配置文件,它用于进行系统级别的配置,例如连接到配置服务器、配置加密等。它在应用程序上下文被创建之前加载,因此可以在应用程序的早期阶段使用它来配置一些必要的属性。

相比之下,application.yml是应用程序级别的配置文件,用于配置应用程序的具体行为和属性。

由于bootstrap.yml在应用程序上下文创建之前加载,它的配置会覆盖application.yml中相同属性的配置。这使得bootstrap.yml可以用于设置一些全局的配置,而application.yml则用于设置应用程序特定的配置。

因此,如果bootstrap.ymlapplication.yml中存在相同的属性配置,bootstrap.yml中的配置将覆盖application.yml中的配置。这样可以确保系统级别的配置优先于应用程序级别的配置。

故如果在 bootstrap.yml 中指定了环境,但是没找到配置文件,然后加载了application.yml 配置文件内容,环境会以 bootstrap.yml 为准。如果环境和 springProfile 不匹配会出现日志无法输出到日志文件的情况。

你可能感兴趣的:(java,前端,开发语言)