zoukankan      html  css  js  c++  java
  • springboot日志logback配置

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!--
      3     scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
      4     scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒;当scan为true时,此属性生效。默认的时间间隔为1分钟。
      5     debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
      6 -->
      7 <configuration scan="false" scanPeriod="60 seconds" debug="false">
      8     <!-- 定义日志的根目录 -->
      9     <property name="LOG_HOME" value="logs"/>
     10     <!-- 定义日志文件名称 -->
     11     <property name="appName" value="log"></property>
     12     <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
     13     <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
     14         <!--
     15         日志输出格式:
     16             %d表示日期时间,
     17             %thread表示线程名,
     18             %-5level:级别从左显示5个字符宽度
     19             %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
     20             %msg:日志消息,
     21             %n是换行符
     22         -->
     23         <layout class="ch.qos.logback.classic.PatternLayout">
     24             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==> [%thread] ==> %-5level %logger{50} - %msg%n</pattern>
     25         </layout>
     26     </appender>
     27 
     28     <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
     29     <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
     30         <!-- 指定日志文件的名称 -->
     31         <file>${LOG_HOME}/${appName}.log</file>
     32         <!--
     33         当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
     34         TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
     35         -->
     36         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     37             <!--
     38             滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
     39             %i:当文件大小超过maxFileSize时,按照i进行文件滚动
     40             -->
     41             <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
     42             <!--
     43             可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
     44             且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
     45             那些为了归档而创建的目录也会被删除。
     46             -->
     47             <MaxHistory>365</MaxHistory>
     48             <!--
     49             当日志文件超过maxFileSize指定的大小时,根据上面提到的%i进行日志文件滚动
     50             注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
     51             -->
     52             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     53                 <maxFileSize>1KB</maxFileSize>
     54             </timeBasedFileNamingAndTriggeringPolicy>
     55         </rollingPolicy>
     56         <!-- 日志输出格式: -->
     57         <layout class="ch.qos.logback.classic.PatternLayout">
     58             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
     59         </layout>
     60         <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
     61             <level>ERROR</level>
     62             <onMatch>ACCEPT</onMatch>
     63             <onMismatch>DENY</onMismatch>
     64         </filter>
     65     </appender>
     66 
     67     <!--输出到error-->
     68     <appender name="appLogAppenderError" class="ch.qos.logback.core.rolling.RollingFileAppender">
     69         <!-- 指定日志文件的名称 -->
     70         <file>${LOG_HOME}/${appName}-error.log</file>
     71         <!--
     72         当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
     73         TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
     74         -->
     75         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     76             <!--
     77             滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
     78             %i:当文件大小超过maxFileSize时,按照i进行文件滚动
     79             -->
     80             <fileNamePattern>${LOG_HOME}/${appName}-error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
     81             <!--
     82             可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
     83             且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
     84             那些为了归档而创建的目录也会被删除。
     85             -->
     86             <MaxHistory>365</MaxHistory>
     87             <!--
     88             当日志文件超过maxFileSize指定的大小时,根据上面提到的%i进行日志文件滚动
     89             注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
     90             -->
     91             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     92                 <maxFileSize>1KB</maxFileSize>
     93             </timeBasedFileNamingAndTriggeringPolicy>
     94         </rollingPolicy>
     95         <!-- 日志输出格式: -->
     96         <layout class="ch.qos.logback.classic.PatternLayout">
     97             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
     98         </layout>
     99         <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
    100             <level>ERROR</level>
    101             <onMatch>ACCEPT</onMatch>
    102             <onMismatch>DENY</onMismatch>
    103         </filter>
    104     </appender>
    105 
    106 
    107     <!--
    108         logger主要用于存放日志对象,也可以定义日志类型、级别
    109         name:表示匹配的logger类型前缀,也就是包的前半部分
    110         level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
    111         additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
    112         false:表示只用当前logger的appender-ref,true:
    113         表示当前logger的appender-ref和rootLogger的appender-ref都有效
    114     -->
    115     <!-- app logger -->
    116     <logger name="com.qianxingniwo" level="debug"/>
    117     <!-- Spring framework logger -->
    118     <logger name="org.springframework" level="debug" additivity="false"></logger>
    119 
    120     <!--
    121     root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
    122     要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。
    123     -->
    124     <root level="info">
    125         <appender-ref ref="stdout"/>
    126         <appender-ref ref="appLogAppender"/>
    127         <appender-ref ref="appLogAppenderError"/>
    128     </root>
    129 </configuration>
    2、%C{length}、%class{length}:输出发生日志事件的调用类的全限定名。与%logger类似,{length}可选项来限定类名的长度,适度进行缩写。
    
    3、%d{pattern}、%date{pattern}、%d{pattern,timezone}、%date{pattern,timezone}:输出日志事件的时间;{pattern}为可选项,用于声明时间的格式,比如%d{yyyy-MM-dd HH:mm:ss},pattern必须为“java.text.SimpleDateFormat”类可兼容的格式。
    
    4、%F、%file:输出发生日志请求的java源文件名,产生文件名信息不是特别的快,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(比如输出:TestMain.java,默认异常栈中会输出类名)
    
    5、%caller{depth}、%caller{depthStart..depthEnd}:输出产生日志事件的调用者位置信息,{depth}为可选项;位置信息依赖于JVM实现,不过通常会包含调用方法的全限定名、文件名和行号。
    
    假如:TestMain.java中main()-->test1()-->test2(),在test2方法中触发日志事件,假如%caller{3}将会输出

    6、%L、%line:输出发生日志请求的源文件行号,产生行号信息不是非常的快速,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(默认异常栈中会输出行号)

    
    

    7、%m、%msg、%message:在日志中输出应用提供的message。

    
    

        比如:LOGGER.error("message",exception),输出“message”和exception栈。

    
    

    8、%M、%method:输出发出日志记录请求的方法名称,产生方法名不是特别快速。

    
    

    9、%n:输出一个行分隔符,即换行符。(取决于运行平台,可能是“ ”," ")

    
    

    10、%p、%le、%level:输出日志事件的level。

    
    

    11、%t、%thread:输出产生日志事件的线程名称。

    
    

    12、%ex{depth}、%exception{depth}:输出日志事件相关的异常栈,默认会输出异常的全跟踪栈。(%m会包含此部分)

    
    

    13、%nopex:输出日志数据,但是忽略exception。

     
  • 相关阅读:
    Servlet
    javaBean
    堆排序
    快速排序
    JSP9大内置对象
    include指令与<jsp:include>动作标识
    JSP指令标识
    TreeSet
    使用Docker存储之卷Volume
    Java学习之HttpClient的GET与POST请求
  • 原文地址:https://www.cnblogs.com/newAndHui/p/10670394.html
Copyright © 2011-2022 走看看