Logback记录以及过滤分离日志配置

先涨几个姿势

日志过滤器

  1. 级别过滤器 LevelFilter

<!-- 日志级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
 </filter>
  1. 临界值过滤器 ThresholdFilter

  <!-- 临界值过滤器 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level> <!--只打印级别含INFO及以上的日志-->
        </filter>
  1. 求值过滤器 EvaluatorFilter

     <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <expression>return message.contains("onUncaughtException(SimpleConnection");</expression>
            </evaluator>
            <OnMatch>DENY</OnMatch>
            <OnMismatch>NEUTRAL</OnMismatch>
        </filter>

过滤枚举操作

  1. DENY:日志将立即被抛弃不再经过其他过滤器;

  1. NEUTRAL:有序列表里的下个过滤器过接着处理日志;

  1. ACCEPT:日志会被立即处理,不再经过剩余过滤器。

下面是参考日志配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="APP_Name" value="EC-GATEWAY" />
    <!--    应用名称-->
    <contextName>${APP_Name}</contextName>

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="log.home" value="./logs/${APP_Name}" />

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <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}}" />
    <!-- Console 输出设置 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <expression>return message.contains("onUncaughtException(SimpleConnection");</expression>
            </evaluator>
            <OnMatch>DENY</OnMatch>
            <OnMismatch>NEUTRAL</OnMismatch>
        </filter>
    </appender>

    <!-- 文件保存日志的相关配置 ERROR -->
    <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 保存日志文件的路径 -->
        <!-- 日志格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
        </encoder>

        <!-- 追加方式记录日志 -->
        <append>true</append>

        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <expression>return message.contains("onUncaughtException(SimpleConnection");</expression>、
            </evaluator>
            <OnMatch>DENY</OnMatch>
            <OnMismatch>NEUTRAL</OnMismatch>
        </filter>

        <!-- 日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.home}/error/%d{yyyy-MM-dd}-error.log</fileNamePattern>
            <!-- 最大保存时间:30天-->
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!-- 日志文件最大大小 -->
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 文件保存日志的相关配置 INFO -->
    <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 保存日志文件的路径 -->
        <!--<file>D:/logs/info/info.log</file>-->
        <!-- 日志格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
        </encoder>
        <!-- 日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>

        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.home}/info/%d{yyyy-MM-dd}-info.log</fileNamePattern>
            <!-- 最大保存时间:30天-->
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!-- 日志文件最大大小 -->
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>

    </appender>


    <logger name="com.netflix" level="ERROR" />
    <logger name="org.springframework" level="ERROR" />
    <!-- 输出mybatis的sql语句,没有这句就无法输出mybatis的sql语句,name属性指定到要输出日志的dao,即mybatis要代理的dao -->
    <!-- 基于info处理日志:具体控制台或者文件对日志级别的处理还要看所在appender配置的filter,如果没有配置filter,则使用root配置 -->
    <!--   <root level="WARN">-->
    <root level="ERROR">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="INFO-OUT" />
        <appender-ref ref="ERROR-OUT" />
    </root>
</configuration>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过在 logback-spring.xml 文件中添加以下配置来为日志添加颜色: ``` <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> <springProfile name="dev"> <logger name="com.example" level="DEBUG" /> </springProfile> <springProfile name="prod"> <logger name="com.example" level="WARN" /> </springProfile> <springProfile name="test"> <logger name="com.example" level="DEBUG" /> </springProfile> <springProfile name="!test"> <logger name="org.springframework.web" level="WARN" /> </springProfile> <!-- 添加以下配置以为日志添加颜色 --> <conversionRule conversionWord="%clr(%level)" levelMin="DEBUG" levelMax="INFO" next="[%thread] %logger{36}.%M - %msg%n"/> <conversionRule conversionWord="%clr(%level)" levelMin="WARN" levelMax="ERROR" next="[%thread] %logger{36}.%M - %msg%n"/> <conversionRule conversionWord="%clr(%exception)" levelMin="ERROR" levelMax="ERROR" next="%n"/> </configuration> ``` 这将为 DEBUG 和 INFO 级别的日志添加颜色。 如果您使用的是 Spring Boot,则您可以在 application.properties 或 application.yml 文件中使用以下属性来配置彩色日志: ``` logging.console.level=info spring.profiles.active=dev # 添加以下属性以为日志添加颜色 logging.pattern.level=%clr(%5p) logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} [%C:%L] --- [%t] %-40.40logger{39} : %m%n%wex logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} [%C:%L] --- [%t] %-40.40logger{39} : %clr(${LOG_EXCEPTION_CONVERSION_WORD:-%5p})%m%n%wex ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值