logback标准配置模板

文章目录

      • logback配置详解
        • 1. 根节点 - configuration
          • 1.1 configuration - appender
            • 1.1.1 configuration - appender - encoder
            • 1.1.2 configuration - appender - filter
            • 1.1.3 configuration - appender - append
            • 1.1.4 configuration - appender - prudent
            • 1.1.5 configuration - appender 输出到Console
            • 1.1.6 configuration - appender 输出到文件
            • 1.1.7 configuration - appender 输出到滚动文件
          • 1.2 configuration - logger
            • 1.2.1 确定父子级别
            • 1.2.2 输出级别的判定
            • 1.2.3 是否向父级追加
            • 1.2.4 设置输出appender
          • 1.3 configuration - root
          • 1.4 在logback的配置文件里获取application.yml中的属性
        • 2 常用配置

logback配置详解

logback标准配置模板_第1张图片

官方文档 http://logback.qos.ch/manual/

1. 根节点 - configuration

一共有三个属性

  • debug
    当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

  • scan
    当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

  • scanPeriod
    设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

1.1 configuration - appender

指定日志输出格式,输出位置,相当于一个出口

2个主要属性

  • name
    name指定appender名称

  • class
    class指定appender的全限定名

1.1.1 configuration - appender - encoder

encoder负责将事件转换为字节数组,并将该字节数组写入OutputStream。可以设置日志输出格式。

    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 
        <encoder>
            <pattern>%d %-5level [%thread] %logger{0}: %msg%npattern>
            <charset>UTF-8charset>
        encoder> 
    appender>
1.1.2 configuration - appender - filter

对日志进行过滤,常用的2中

  • ch.qos.logback.classic.filter.ThresholdFilter
    指定最低日志级别,高于等于设定级别的日志都会被输出
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUGlevel>
        filter>
    appender>
  • ch.qos.logback.classic.filter.LevelFilter
    LevelFilter基于精确的级别匹配过滤事件。如果事件的级别等于配置的级别,则筛选器接受或拒绝该事件,这取决于onMatch和onMisMatch属性的配置。
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFOlevel>
      <onMatch>ACCEPTonMatch>
      <onMismatch>DENYonMismatch>
    filter>
appender>
1.1.3 configuration - appender - append

追加日志还是覆盖日志

    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>${basePath}self.logfile>
        
        <append>trueappend>
        <encoder> 
            <pattern>${pattern}pattern>
            <charset>UTF-8charset>
        encoder>
        
        <prudent>falseprudent>
    appender>
1.1.4 configuration - appender - prudent

prudent=true表示日志写入线程安全,会降低效率,默认为false

配置如上

1.1.5 configuration - appender 输出到Console
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 
        <encoder>
            <pattern>${pattern}pattern>
            <charset>UTF-8charset>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUGlevel>
        filter>
    appender>
1.1.6 configuration - appender 输出到文件
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>${basePath}self.logfile>
        
        <append>trueappend>
        <encoder> 
            <pattern>${pattern}pattern>
            <charset>UTF-8charset>
        encoder>
        
        <prudent>falseprudent>
    appender>
1.1.7 configuration - appender 输出到滚动文件
滚动策略。具体策略由class指定。

TimeBasedRollingPolicy是最常用的滚动策略,根据时间滚动,当达到一定时间时,自动重新开辟一个日志文件

FixedWindowRollingPolicy根据固定窗口算法重命名文件的滚动策略

triggeringPolicy根据当前活动文件大小来决定是否滚动的策略

SizeAndTimeBasedRollingPolicy同时根据日期和文件大小的滚动测策略

<appender name="timeFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${basePath}RollingFile%d{yyyy-MM-dd}.logfileNamePattern>
            
            
            <maxHistory>30maxHistory>
        rollingPolicy>

        
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            
            
            <fileNamePattern>${basePath}fixedFile%i.log.zipfileNamePattern>
            <minIndex>1minIndex>
            
            <maxIndex>3maxIndex>
        rollingPolicy>

        
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MBmaxFileSize>
        triggeringPolicy>

        
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <maxFileSize>50MBmaxFileSize>
            <maxHistory>30maxHistory>
        rollingPolicy>

        <encoder>
            <pattern>${pattern}pattern>
            <charset>UTF-8charset>
        encoder>
    appender>
1.2 configuration - logger

logger是代码中获取用于输出的对象

3个主要属性

  • name
    name属性可指定为包名或类名

  • level
    声明输出级别

  • additivity
    表示是否向父级logger传递打印消息,默认为true

1.2.1 确定父子级别

以name属性为判断标准,同java类的包关系。

如下2个logger,第一个就是第二个的父级

<logger name="a.b" level="debug">
logger>
<logger name="a.b.c" level="debug">
logger>
1.2.2 输出级别的判定

若子logger没有指定level,则向父级找,以最近的一个父级的level为准,root节点是最高级,默认level是debug

如下3个logger,第二个logger的level就是info

<logger name="a" level="info">
logger>
<logger name="a.b">
logger>
<logger name="a.b.c" level="debug">
logger>
1.2.3 是否向父级追加

当 additivity = true 时,子logger输出一遍,父级还会输出一遍

如下3个logger, 获取 logger = LoggerFactory.getLogger(“a.b.c”),当用logger打印一个日志时,第三个会输出一次,第二个也会输出一次

<logger name="a" level="info">
logger>
<logger name="a.b" additivity="false">
logger>
<logger name="a.b.c" level="debug">
logger>
1.2.4 设置输出appender

appender-ref指定输出位置,可以有0个或多个,0个就是没有输出位置,多个就是输出到多个位置

<logger name="a" level="info">
    <appender-ref ref="stdout"/>
logger>
<logger name="a.b" additivity="false">
logger> 
1.3 configuration - root

根logger,只需要指定一个 level

1.4 在logback的配置文件里获取application.yml中的属性
<springProperty name="basePath" source="log.path"/>

要想用这个标签,配置文件名不能命名为 logback.xml 或 logback-test.xml,因为那样这个配置文件就会在spring加载前加载,就找不到 application.yml中的参数

2 常用配置






<configuration>
    <contextName>myAppNamecontextName>
    <springProperty name="basePath" source="log.path" defaultValue=""/>

    
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <property name="file_pattern"
              value="%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n"/>
    <property name="console_pattern"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        
        <encoder>
            <pattern>${console_pattern}pattern>
            <charset>UTF-8charset>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUGlevel>
        filter>
    appender>


    
    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/debug.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gzfileNamePattern>
            <maxFileSize>50MBmaxFileSize>
            <maxHistory>30maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>${file_pattern}pattern>
        encoder>
    appender>

    
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/info.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/%d{yyyy-MM, aux}/info.%d{yyyy-MM-dd}.%i.log.gzfileNamePattern>
            <maxFileSize>50MBmaxFileSize>
            <maxHistory>30maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>${file_pattern}pattern>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFOlevel>
        filter>
    appender>

    
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${basePath}/error.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${basePath}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gzfileNamePattern>
            <maxFileSize>50MBmaxFileSize>
            <maxHistory>30maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>${file_pattern}pattern>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERRORlevel>
        filter>
    appender>



    <root level="debug">
        <appender-ref ref="stdout"/>
        <appender-ref ref="debug"/>
        <appender-ref ref="info"/>
        <appender-ref ref="error"/>
    root>
configuration>

你可能感兴趣的:(框架,logback,java,配置)