• SpringBoot LogBack日志配置


    SpringBoot默认使用的是LogBack日志,只需引入spring-boot-starter或者spring-boot-starter-web依赖即可使用LogBack

    resources目录下新建 logback-spring.xml文件

    文件具体配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- 彩色日志依赖的渲染类 -->
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
        <!--格式化输出:%d表示日期,%thread表示线程名,%logger 日志输出者的名字,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    
        <!-- 定义日志文件的存储地址,勿在LogBack的配置中中使用相对路径 -->
        <property name="LOG_HOME" value="/logs"/>
    
        <!-- 定义一个控制台输出器,名为CONSOLE-->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}-[%thread] - %clr(%-5.5p) - %clr(%-50.60logger{50}){cyan} - %-4.4L - %clr(%8X{token}){yellow} - %msg%n
                </pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <!-- 定义Info级别输出器,名为INFO_FILE,只记录INFO级别日志-->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--    IFNO级别日志被appender日志处理,其他级别日志直接拒绝    -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <!-- 文件输出格式 -->
            <encoder>
                <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%thread]- %-5level - %-50.60logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!-- 文件路径 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件名称 -->
                <fileNamePattern>${LOG_HOME}/java_api.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 文件最大保存历史数量 -->
                <MaxHistory>30</MaxHistory>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
        </appender>
    
        <!-- 定义error和warn级别输出器,名为ERROR_FILE,直接录error和warn级别输出器-->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--    ERROR级别日志立即记录,其他级别日志丢给下一个过滤器处理    -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>NEUTRAL</onMismatch>
            </filter>
            <!--    ERROR级别日志立即记录,不匹配的直接拒绝    -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>WARN</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <!-- 文件输出格式 -->
            <encoder>
                <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%thread]- %-5level - %-50.60logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!-- 文件路径 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件名称 -->
                <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 文件最大保存历史数量 -->
                <MaxHistory>30</MaxHistory>
                <cleanHistoryOnStart>true</cleanHistoryOnStart>
            </rollingPolicy>
        </appender>
        <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    
        <logger name="jdbc.sqltiming" level="debug"/>
        <logger name="com.ibatis" level="debug"/>
        <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="debug"/>
        <logger name="com.ibatis.common.jdbc.ScriptRunner" level="debug"/>
        <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="debug"/>
        <logger name="java.sql.Connection" level="debug"/>
        <logger name="java.sql.Statement" level="debug"/>
        <logger name="java.sql.PreparedStatement" level="debug"/>
        <logger name="java.sql.ResultSet" level="debug"/>
        <logger name="org.springframework" level="warn"/>
        <logger name="org.mybatis.spring" level="warn"/>
        <logger name="org.apache.commons" level="warn"/>
        <logger name="org.apache.http" level="warn"/>
        <logger name="org.apache.commons.beanutils.converters" level="warn"/>
        <logger name="org.hibernate" level="warn"/>
        <logger name="org.apache.catalina.core.ContainerBase" level="warn"/>
        <logger name="springfox.documentation" level="warn"/>
    
        <!--    开发环境日志配置    -->
        <springProfile name="dev">
            <root level="DEBUG">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
            </root>
        </springProfile>
    
        <!--    测试环境日志配置    -->
        <springProfile name="test">
            <root level="DEBUG">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
            </root>
        </springProfile>
    
        <!--    生产环境日志配置    -->
        <springProfile name="prod">
            <root level="DEBUG">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
            </root>
        </springProfile>
    </configuration>

    filter过滤器

    ch.qos.logback.classic.filter.LevelFilter 级别过滤器,根据日志级别进行过滤
    通过OnMatch和OnMissMatch来处理日志
    OnMatch:
      ACCEPT   匹配日志级别则立即被记录
      DENY    匹配日志级别则立即抛弃日志,且不经过下一个过滤器
      NEUTRAL  匹配日志级别则丢给下一个过滤器来处理

    OnMissMatch:
      ACCEPT  不匹配日志级别则立即记录日志
      DENY    不匹配日志级别则立即抛弃日志,且不经过下一个过滤器
      NEUTRAl  不匹配日志级别则丢给下一个过滤器来处理

    还有其他的一些过滤器如下
    ch.qos.logback.classic.filter.ThresholdFilter 临界值过滤器,过滤掉低于指定临界值的日志
    ch.qos.logback.core.filter.EvaluatorFilter  求值过滤器,评估、鉴别日志是否符合指定条件
    梦 想 不 大 , 道 路 很 长 , 开 始 了 就 别 停 下
  • 相关阅读:
    问题解决:System.TypeLoadException: 未能从程序集“XXX”中加载类型“XXX
    域名格式验证
    .NET 中String 和StringBuilder 以及他们的区别
    mysql 重设管理员密码 或忘记管理员密码 (必杀)
    CMD 命令
    C# 给多线程传参的三种方式
    django 表单数据的验证实现原理
    django上传文件
    django signal
    Django如何处理语言偏好(根据此可以设置中文)
  • 原文地址:https://www.cnblogs.com/chengzhongyi/p/14217890.html
Copyright © 2020-2023  润新知