springboot( 2.0.6.RELEASE)集成logback日志

引入依赖:

 <properties>
        <java.version>1.8java.version>
        <logback.version>1.2.3logback.version>
        <slf4j.version>1.7.21slf4j.version>
    properties>
 <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>${slf4j.version}version>
            <scope>compilescope>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-coreartifactId>
            <version>${logback.version}version>
        dependency>
        <dependency>
            <groupId>ch.qos.logbackgroupId>
            <artifactId>logback-classicartifactId>
            <version>${logback.version}version>
        dependency>
        
        <dependency>
            <groupId>org.codehaus.janinogroupId>
            <artifactId>commons-compilerartifactId>
            <version>3.0.12version>
        dependency>
        <dependency>
            <groupId>org.codehaus.janinogroupId>
            <artifactId>janinoartifactId>
            <version>3.0.12version>
        dependency>

logback-spring.xml(springboot 的resource文件夹下面)






<configuration scan="true" scanPeriod="10 seconds">

    <property name="ROOT_LEVEL" value="INFO"/>
    <timestamp key="byDate" datePattern="yyyy-MM-dd"/>
    <property name="MESSAGE_FILE_PATTERN" value="%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level %marker %thread %logger %msg%n"/>
    <property name="maxhistory" value="40"/>
    <property name="APP_NAME" value="测试"/>

    

    <contextName>logbackcontextName>
    
    <property name="LOG_PATH" value="D:/nz-workspace/logback"/>

    
    
    <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="CONSOLE_LOG_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="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>infolevel>
        filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}Pattern>
            
            <charset>UTF-8charset>
        encoder>
    appender>

    

    
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_debug.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debuglevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_info.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset>
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_PATH}/info/log-info-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>infolevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>


    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/${APP_NAME}_FILEERROR.logfile>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <fileNamePattern>${LOG_PATH}/$error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            
            <maxHistory>30maxHistory>
            
            <totalSizeCap>1GBtotalSizeCap>
            
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>20MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
        rollingPolicy>
        
        <append>trueappend>
        
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
            <charset>utf-8charset>
        encoder>
        
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator> 
                <expression>return message.contains("There is no session with id");expression>
            evaluator>
            <OnMatch>ACCEPTOnMatch>
            <OnMismatch>DENYOnMismatch>
        filter>
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator> 
                <expression>return message.contains("断开的管道");expression>
            evaluator>
            <OnMatch>ACCEPTOnMatch>
            <OnMismatch>DENYOnMismatch>
        filter>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>errorlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>



    <appender name="STDOUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_STDOUT.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator> 
                <expression>return message.contains("billing");expression>
            evaluator>
            <OnMismatch>DENYOnMismatch>
            <OnMatch>ACCEPTOnMatch>
        filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>infolevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>

        
        <file>${LOG_PATH}/log_STDOUT.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/STDOUT/log-STDOUT-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
    appender>


    
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_warn.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warnlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_error.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>errorlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <file>${LOG_PATH}/log_trace.logfile>
        
        <encoder>
            <pattern>${MESSAGE_FILE_PATTERN}pattern>
            <charset>UTF-8charset> 
        encoder>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/trace/log-trace-%d{yyyy-MM-dd}.%i.logfileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MBmaxFileSize>
            timeBasedFileNamingAndTriggeringPolicy>
            
            <maxHistory>${maxhistory}maxHistory>
        rollingPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>tracelevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    
    
    


    

    
    <springProfile name="dev">
        <logger name="top.lemonz.blog.dao" level="debug"/>
    springProfile>

    <root level="${ROOT_LEVELROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="DEBUG_FILE"/>
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="WARN_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
        <appender-ref ref="TRACE_FILE"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILEERROR"/>

    root>

    
    
    
    
    
    
    
    
    
    

configuration>
@RestController
@Slf4j
public class Controller {
    @GetMapping("/test")
    public  void main(String[] args) {
        for (int i = 0; i < 1000; i++) {
            log.warn("进入warm");
            log.info("进入info");
            log.error("进入error");
            log.debug("进入debug");
            log.info("进入info++++billing");
            log.error("There is no session with id");
        }
    }


}

运行效果:
springboot( 2.0.6.RELEASE)集成logback日志_第1张图片

生成的文件:
springboot( 2.0.6.RELEASE)集成logback日志_第2张图片主要展示一下:log_STDOUT.log文件,展示过滤info日志中带有billing字符串的日志,并打印到对应文件。
springboot( 2.0.6.RELEASE)集成logback日志_第3张图片 可能问题点:
如果新增appender需要在root标签中添加appender-ref子标签。
springboot( 2.0.6.RELEASE)集成logback日志_第4张图片

你可能感兴趣的:(——spring,boot)