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

spring-boot日志编写

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

spring-boot日志编写

自定义logback

spring-boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,spring-boot可以为它添加一些spring-boot特有的配置项。放在 src/main/resources 下面即可,注意:logback.xml加载早于application.yml

节点介绍
  • 根节点:configuration
  1. scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  2. scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  3. debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
  
      

  • configuration子节点:appender

appender用来格式化日志输出节点,有两个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略:

  1. ConsoleAppender:将日志信息打印到控制台上,更加准确的说:使用System.out或者System.err方式输出,主要子标签有:encoder
   
       %date [%thread] %-5level %logger{80} - %msg%n
  

  1. RollingFileAppender:FileAppender是RollingFileAppender的父类。即RollingFileAppender继承 FileAppender类。功能:能够动态的创建一个文件。也就是说:到满足一定的条件,就会创建一个新的文 件,然后将日志写入到新的文件中。有两个重要的标签与rolingFileAppender进行交互:RollingPolicy,TriggeringPolicy,主要子标签:file,append,encoder,rollingPolicy,triggerPolicy
   
   ../logs/tcs.log 
   
      
       ../logs/archive/tcs-StandardVehicleController.%d{yyyy-MM-dd}-%i.zip
       
           
           100MB
       
       
       10
   

    
       %date [%thread] %-5level %logger{80} - %msg%n
   
   
   false
   false

  • appender子节点:prudent
  1. FileAppender:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
  2. RollingFileAppender:当为true时,不支持FixedWindowRollingPolicy。支持TimebasedRollingPolicy,但是有两个限制:
    1:不支持也不允许文件压缩(可以打包成.zip文件但文件后缀需要手动修改)
    2:不能设置file属性,必须留空。
  • appender子节点:layout和encoder

可以看到appender的子节点layout和encoder都可以输出,都可以将事件转换为格式化后的日志记录,但是控制台输出使用layout,文件输出使用encoder。自从0.9.19版本之后,Fileappender和他的子类是期望使用encoder,不再使用layout。


    %d [%thread] %-5level %40logger{40} - %msg%n


    %date [%thread] %-5level %logger{80} - %msg%n

layout和encoder区别

  1. encoder:主要工作有两个:①将一个event事件转换成一组byte数组,②将转换后的字节数据输出到文件中。
  2. encoder组件是在0.9.19版本之后才引进来的。在以前的版本中,appender是使用layout(将一个event事件转换成一个字符串),然后使用【java.io.writer】对象将字符串写入到文件中。
  3. 自从0.9.19版本之后,Fileappender和他的子类是期望使用encoder,不再使用layout。
  • configuration子节点:filter

LevelFilter
如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,所以我们使用下面的策略,可以避免输出 Error 的日志


   
   ERROR
   
   DENY
   
   ACCEPT

  • configuration子节点:logger
  • 用来设置某一个包或者具体的某一个类的日志打印级别以及指定< appender >。

   

  • name:用来指定受此logger约束的某一个包或者具体的某一个类。
  • level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。
  • addtivity:是否向上级logger传递打印信息。默认是true。
  • configuration子节点:root
  • root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。level默认是DEBUG。
  • level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。
  • 可以包含零个或多个元素,标识这个appender将会添加到这个loger。

   
   

  • configuration子节点:springProfile

多环境配置
springProfile标签允许你自由的包含或排除基于激活Spring profiles配置的一部分

配置模板一







    
    
    
    
    

    
    
        
        ${logPath}/${appName}.log
        
        
            
            ${logPath}/${appName}.%d{yyyy-MM-dd}.log
            
            30
            
            1GB
        
        
        
            UTF-8
            
            %d [%thread] %-5level %logger{36} %line - %msg%n
        
    

    
    
        
        
        
        
        
        
        

        
        
            
                ${CONSOLE_LOG_PATTERN}
            
        
        
        
            
        
        
        
            
        
    

    
    
        
            
        
        
            
        
    

    
    
        
            
        
    


配置模板二






    
    

    
    
    
    
    
    
    


    
    
        
        
            debug
        
        
            ${CONSOLE_LOG_PATTERN}
            UTF-8
        
    


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


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

    
    
        ${LOG_HOME}/info.log
        
            INFO
        
        
            
            ${LOG_HOME}/info-%d{yyyy-MM-dd}.%i.log
            
            100MB
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
    

    
    

    

    
    
        
        
            
        
    

    
    
        
        
            
            
        
    


    
    
        
            
        
    



配置模板三




    
    
    
    
    
    
    
    
    
    

    
    
        
        
            DEBUG
        
        
            
            ${FILE_LOG_PATTERN}
            UTF-8
        
        
            
            ${LOG_FILE_PATH}/debug/${APP_NAME}-%d{yyyy-MM-dd}-%i.log
            
            ${LOG_FILE_MAX_SIZE:-10MB}
            
            ${LOG_FILE_MAX_HISTORY:-30}
        
    

    
    
        
        
            ERROR
            ACCEPT
            DENY
        
        
            
            ${FILE_LOG_PATTERN}
            UTF-8
        
        
            
            ${LOG_FILE_PATH}/error/${APP_NAME}-%d{yyyy-MM-dd}-%i.log
            
            ${LOG_FILE_MAX_SIZE:-10MB}
            
            ${LOG_FILE_MAX_HISTORY:-30}
        
    

    
    
        
            DEBUG
        
        ${LOG_STASH_HOST}:4560
        
            
                
                    Asia/Shanghai
                
                
                
                    
                        {
                        "project": "mall",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "%message",
                        "stack_trace": "%exception{20}"
                        }
                    
                
            
        
    

    
    
        
            ERROR
            ACCEPT
            DENY
        
        ${LOG_STASH_HOST}:4561
        
            
                
                    Asia/Shanghai
                
                
                
                    
                        {
                        "project": "mall",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "%message",
                        "stack_trace": "%exception{20}"
                        }
                    
                
            
        
    

    
    
        ${LOG_STASH_HOST}:4562
        
            
                
                    Asia/Shanghai
                
                
                
                    
                        {
                        "project": "xxx",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "%message",
                        "stack_trace": "%exception{20}"
                        }
                    
                
            
        
    

    
    
        ${LOG_STASH_HOST}:4563
        
            
                
                    Asia/Shanghai
                
                
                
                    
                        {
                        "project": "xxx",
                        "level": "%level",
                        "service": "${APP_NAME:-}",
                        "class": "%logger",
                        "message": "%message"
                        }
                    
                
            
        
    

    
    
    
    
    
    


    
        
    

    
        
    

    
        
        
        
        
        
    

参考文档 NPException

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

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

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