• SpringBoot集成logback日志组件


    1、在pom.xml中添加依赖jar包

    <!--logback begin-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>
    
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.1.7</version>
    </dependency>
    
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>
    <!--logback end-->

    2、logback.xml文件放在Resource/config文件夹下
    完整路径:/src/main/resources/config/logback.xml

    <?xml version="1.0" encoding="UTF-8"?>
     
    <configuration>
        <property name="CONTEXT_NAME" value="yp-user-sync"/>
        <property name="LOG_PATH" value="/yp/log/yp-user-sync"/>
        <property name="MAX_FILE_SIZE" value="30MB"/>
        <property name="MAX_HISTORY" value="30"/>
    
        <contextName>${CONTEXT_NAME}</contextName>
    
        <!-- 彩色日志 -->
        <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{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%15.15t]){faint} [%X{requestId}] %clr(%-40.40logger{39}){cyan} [%L] %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
        <!-- 文件日志样式 -->
        <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} [%t] [%X{requestId}] %-40.40logger{39} %L : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    
        <!-- 禁用logback自身日志输出 -->
        <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
    
        <!-- 控制台 -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
    
        <!-- 运行日志文件 -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${LOG_PATH}/yp-user.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/yp-user-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                <maxHistory>${MAX_HISTORY}</maxHistory>
            </rollingPolicy>
        </appender>
    
        <!-- 错误日志文件 -->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${LOG_PATH}/yp-user-error.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/yp-user-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                <maxHistory>${MAX_HISTORY}</maxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <!-- 异步写日志 -->
        <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <queueSize>1024</queueSize>
            <appender-ref ref ="FILE"/>
        </appender>
        <appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <queueSize>1024</queueSize>
            <appender-ref ref ="ERROR_FILE"/>
        </appender>
    
        <!-- 不同环境的日志级别配置 -->
        <springProfile name="dev">
            <logger name="io.geekidea.springbootplus" level="DEBUG"/>
        </springProfile>
    
        <!-- 解决SpringBootAdmin错误日志问题 -->
        <logger name="org.apache.catalina.connector.CoyoteAdapter" level="OFF"/>
    
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="ASYNC_FILE" />
            <appender-ref ref="ASYNC_ERROR_FILE" />
        </root>
    
    </configuration>

     

    3、/src/main/resources/application.yml进行日志配置

    # logback.xml中有详细的日志配置
    logging:
      config: classpath:config/logback.xml


    4、测试代码Controller( 注:一定不要倒错包)

    package com.lynch.config.mapper;
    
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class HelloWorldTest {
        public static void main(String[] args) {
            log.info("hello,{}", "张三");
            log.warn("hello,{}", "李四");
            log.error("hello,{}", "王五");
        }
    }

     

    5、测试结果

    14:33:28.908 [main] INFO com.yunping.asap.config.mapper.HelloWorldTest - hello,张三
    14:33:28.921 [main] WARN com.yunping.asap.config.mapper.HelloWorldTest - hello,李四
    14:33:28.921 [main] ERROR com.yunping.asap.config.mapper.HelloWorldTest - hello,王五

     

     

     

  • 相关阅读:
    Elasticsearch Network Settings
    Spring Application Event Example
    hibernate persist update 方法没有正常工作(不保存数据,不更新数据)
    快速自检电脑是否被黑客入侵过(Linux版)
    快速自检电脑是否被黑客入侵过(Windows版)
    WEB中的敏感文件泄漏
    Nginx日志分析
    关系型数据库设计小结
    软件开发的一些"心法"
    关于DNS,你应该知道这些
  • 原文地址:https://www.cnblogs.com/linjiqin/p/13596079.html
Copyright © 2020-2023  润新知