Logback日志框架如何限制日志最长打印长度?

发布时间 2023-09-12 16:01:47作者: 护发师兄

在程序中,我们一般不希望在运行时打印过长的日志,所以我们需要对日志进行长度限制。以下就是对日志进行长度限制的步骤。

1. 编写过滤器

在程序中新建CustomLengthFilter过滤器类,内容如下:

public class CustomLengthFilter extends Filter<ILoggingEvent> {
    private int maxLength;

    @Override
    public FilterReply decide(ILoggingEvent event) {
        String message = event.getMessage();
        if (message != null && message.length() > maxLength) {
            // 消息长度超过指定的最大长度,拒绝打印
            return FilterReply.DENY;
        }
        return FilterReply.NEUTRAL;
    }

    public void setMaxLength(int maxLength) {
        this.maxLength = maxLength;
    }
}

2. 编写Logback.xml

resources目录下新建Logback.xml

<configuration>
    <!-- 引入SpringBoot默认的logback配置文件 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!-- 其他配置 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
        <!-- 添加自定义过滤器(这里填写你自己的包路径) -->
        <filter class="com.filter.CustomLengthFilter">
            <maxLength>500</maxLength>
        </filter>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>