zoukankan      html  css  js  c++  java
  • gradle 构建的 Spring Boot 使用 logback

           文章讲的是配置和使用,入门请看文档先。

    what

           目的: 可以实现log不同级别的日志记录,例如info 在一个文件夹内,另一个级别的在另一个文件夹内。

    how

    配置依赖项

      1 	//log
      2 	compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
      3 	compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'

    编写配置文件

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!--<configuration scan="true" scanPeriod="60 seconds" >-->
      3     <configuration >
      4 
      5     <!--&lt;!&ndash; 动态日志级别 &ndash;&gt;-->
      6     <!--<jmxConfigurator/>-->
      7     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
      8     <property name="LOG_HOME" value="D:Log"/>
      9     <property name="log.level" value="debug"/>
     10     <property name="log.maxHistory" value="30"/>
     11 
     12     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     13         <encoder>
     14             <pattern>%black(Console ) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) %cyan(%message%n)
     15             </pattern>
     16         </encoder>
     17     </appender>
     18 
     19 
     20     <!-- ERROR级别日志 -->
     21     <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
     22     <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
     23         <!-- 过滤器,只记录WARN级别的日志 -->
     24         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
     25         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     26             <!-- 设置过滤级别 -->
     27             <level>ERROR</level>
     28             <!-- 用于配置符合过滤条件的操作 -->
     29             <onMatch>ACCEPT</onMatch>
     30             <!-- 用于配置不符合过滤条件的操作 -->
     31             <onMismatch>DENY</onMismatch>
     32         </filter>
     33         <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责触发滚动 -->
     34         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     35             <!--日志输出位置 可以是相对和绝对路径 -->
     36             <fileNamePattern>
     37                 ${LOG_HOME}/error/%d{yyyy-MM-dd}/%i.log
     38             </fileNamePattern>
     39             <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
     40             <maxHistory>${log.maxHistory}</maxHistory>
     41             <TimeBasedFileNamingAndTriggeringPolicy
     42                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     43                 <!-- 单个log文件超过该大小就会重新建一个log文件-/> -->
     44                 <MaxFileSize>2MB</MaxFileSize>
     45             </TimeBasedFileNamingAndTriggeringPolicy>
     46         </rollingPolicy>
     47         <encoder>
     48             <pattern>
     49                 <!-- 设置日志输出格式 -->
     50                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
     51             </pattern>
     52         </encoder>
     53     </appender>
     54 
     55 
     56     <!-- WARN级别日志 appender -->
     57     <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
     58         <!-- 过滤器,只记录WARN级别的日志 -->
     59         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
     60         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     61             <!-- 设置过滤级别 -->
     62             <level>WARN</level>
     63             <!-- 用于配置符合过滤条件的操作 -->
     64             <onMatch>ACCEPT</onMatch>
     65             <!-- 用于配置不符合过滤条件的操作 -->
     66             <onMismatch>DENY</onMismatch>
     67         </filter>
     68         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     69             <!--日志输出位置 可相对、和绝对路径 -->
     70             <fileNamePattern>${LOG_HOME}/warn/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
     71             <maxHistory>${log.maxHistory}</maxHistory>
     72             <TimeBasedFileNamingAndTriggeringPolicy
     73                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     74                 <MaxFileSize>2MB</MaxFileSize>
     75             </TimeBasedFileNamingAndTriggeringPolicy>
     76         </rollingPolicy>
     77         <encoder>
     78             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
     79         </encoder>
     80     </appender>
     81 
     82 
     83     <!-- INFO级别日志 appender -->
     84     <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
     85         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     86             <level>INFO</level>
     87             <onMatch>ACCEPT</onMatch>
     88             <onMismatch>DENY</onMismatch>
     89         </filter>
     90         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     91             <fileNamePattern>${LOG_HOME}/info/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
     92             <maxHistory>${log.maxHistory}</maxHistory>
     93             <TimeBasedFileNamingAndTriggeringPolicy
     94                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     95                 <MaxFileSize>2MB</MaxFileSize>
     96             </TimeBasedFileNamingAndTriggeringPolicy>
     97         </rollingPolicy>
     98         <encoder>
     99             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    100         </encoder>
    101     </appender>
    102 
    103 
    104     <!-- DEBUG级别日志 appender -->
    105     <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    106         <filter class="ch.qos.logback.classic.filter.LevelFilter">
    107             <level>DEBUG</level>
    108             <onMatch>ACCEPT</onMatch>
    109             <onMismatch>DENY</onMismatch>
    110         </filter>
    111         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    112             <fileNamePattern>${LOG_HOME}/debug/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
    113             <maxHistory>${log.maxHistory}</maxHistory>
    114             <TimeBasedFileNamingAndTriggeringPolicy
    115                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    116                 <MaxFileSize>2MB</MaxFileSize>
    117             </TimeBasedFileNamingAndTriggeringPolicy>
    118         </rollingPolicy>
    119         <encoder>
    120             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    121         </encoder>
    122     </appender>
    123 
    124 
    125     <!-- TRACE级别日志 appender -->
    126     <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    127         <filter class="ch.qos.logback.classic.filter.LevelFilter">
    128             <level>TRACE</level>
    129             <onMatch>ACCEPT</onMatch>
    130             <onMismatch>DENY</onMismatch>
    131         </filter>
    132         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    133             <fileNamePattern>${LOG_HOME}/trace/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
    134             <maxHistory>${log.maxHistory}</maxHistory>
    135             <TimeBasedFileNamingAndTriggeringPolicy
    136                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    137                 <MaxFileSize>2MB</MaxFileSize>
    138             </TimeBasedFileNamingAndTriggeringPolicy>
    139         </rollingPolicy>
    140         <encoder>
    141             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
    142         </encoder>
    143     </appender>
    144     <!--//原文:https://blog.csdn.net/zzzgd_666/article/details/80458444-->
    145 
    146 
    147     <!--日志输出级别-->
    148     <!--级别:-->
    149     <!--trace-debug-info-warn-error-fetal-->
    150     <!-- root级别   DEBUG -->
    151     <root>
    152         <!-- 打印debug级别日志及以上级别日志 -->
    153         <level value="${log.level}"/>
    154         <!-- 控制台输出 -->
    155         <appender-ref ref="console"/>
    156         <!-- 文件输出 -->
    157         <appender-ref ref="ERROR"/>
    158         <appender-ref ref="INFO"/>
    159         <appender-ref ref="WARN"/>
    160         <appender-ref ref="DEBUG"/>
    161         <appender-ref ref="TRACE"/>
    162     </root>
    163 
    164 </configuration>

           appender 代表的是日志记录器,表示使用何种方式来记录日志, 上面有两个,一种是 console 控制台方式的,一个是以滚动文件的形式来记录文件。

    当记录的文件超过一定大小时就会创建新的文件,filter 就是过滤器,会过滤某一种级别的日志。root 元素类有个level 的子元素指定要记录何种级别的日志。

    使用

      1 public class LogUtil {
      2     public static Logger getLogger(Class class1){
      3         Logger logger = LoggerFactory.getLogger(class1);
      4         return logger;
      5     }
      6 
      7 }
      8 
  • 相关阅读:
    java后端
    2017-12-11
    二叉树与分治法整理
    javaweb
    安装docker
    爬虫
    lintcode
    DEEPlearning
    剑指offer_by牛客网
    DFS
  • 原文地址:https://www.cnblogs.com/Benjious/p/9877218.html
Copyright © 2011-2022 走看看