springboot学习总结系列(一):多环境下(开发环境,生产环境)logback的配置(使用yml(properties同理),方便生产环境和开发环境的自由切换)

本文主要讲解springboot项目下,如何通过修改一行配置文件,自由切换生产环境和开发环境logback的不同配置;

核心是解决了不同环境下由于对日志记录要求的不一样(日志级别、记录形式等)而需要不同配置的情况下,方便我们自由切换配置内容(至于logback的核心配置,这里不做赘述);

一、首先我们创建一个标准的maven项目,引入springboot的相关依赖,这里不再赘述(可以参考https://blog.csdn.net/mayunju/article/details/78721107前半部分);

二、我们在src/main/resources下面创建4个文件,截图如下:

三、这里贴一下yml和logback-spring.xml与本分享相关的核心内容

application.yml:

spring:
  # dev || prod
  profiles:
    active: prod

这里通过配置profiles.active的值来切换使用-dev还是-prod的配置文件,但-dev和-prod的内容不再贴出,和本分享关系不大;

logback-spring.xml:

    
    
        
        
            
        
        
        
        
    

    
    
        
        
            
            
        
    

重点是的name属性值,这样我们可以配置在不同的环境使用不用的appender,用于配置是仅仅将日志信息打印到控制台还是输出的磁盘文件中,以及输出不同级别的日志等(这里不做赘述);

四、核心分享到这里已经完毕,下面贴一个完整的日志配置文件,仅供参考

特别注意:如果使用 EvaluatorFilter 请在pom.xml引入以下依赖

        
        
        
            org.codehaus.janino
            janino
            3.0.14
        

比如下面贴的配置文件,我在生产环境的配置中过滤了两个异常:

org.apache.catalina.connector.ClientAbortException和另一个我项目中自定义的异常类,不在日志文件中记录这两个意义不大的异常信息,一般第一个异常都不需要记录,是因为客户端主动放弃请求导致的;

logback-spring.xml:







    
    
    
    

    
    ${PROJECT_NAME}

    

    
    
    
        
            %d{yyyy-MM-dd HH:mm:ss.SSS}- [%contextName]- [%thread]- [%-5level]- [%logger{36}]- [%msg]- %n
            UTF-8
        
    

    
    
    

        
        

        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS}- [%contextName]- [%thread]- [%-5level]- [%logger{36}]- [%msg] - %n
            UTF-8
        

        

        
        
            ${LOG_PATH}/${PROJECT_NAME}-warn.%d{yyyy-MM-dd}.%i.log

            
            100MB
            60

            
            10GB
        

        
        
            
            ${FILE-APPENDER_LOG_LEVEL}
        

        
            
                org.apache.catalina.connector.ClientAbortException.class.isInstance(throwable)
                cn.**.common.exception.NoPermissionException.class.isInstance(throwable)
            
            
            DENY
        

    

    
    
        
        
            
        
        
        
         
    

    
    
        
        
            
            
        
    

 

你可能感兴趣的:(日志,logback)