Logo

Spring Boot Logback 配置日志关键字过滤指南

作者

在Spring Boot项目中,可以使用Logback作为日志框架,配置实现不打印包含关键字的日志。关键字过滤可以帮助开发人员快速定位问题,不输出包含特定关键字的日志信息。

以下是配置Logback实现关键字过滤的指南:

  1. 在项目的resources目录下创建logback-spring.xml文件(如果是Spring Boot项目)或logback.xml文件(如果是普通Java项目)。

  2. 在logback配置文件中添加以下内容:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.example" level="INFO">
        <appender-ref ref="CONSOLE"/>
    </logger>

    <!-- 过滤器配置 -->
	<filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
	    <evaluator>        
		    <expression>return logger.contains("Mapper.select") ||  
	            logger.contains("Mapper.get") ||  
	            logger.contains("Mapper.list") || logger.contains("Mapper.query") ||  
	            logger.contains("Mapper.find") || logger.contains("Mapper.count");  
	        </expression>  
	    </evaluator>    
	    <OnMismatch>NEUTRAL</OnMismatch>  
	    <OnMatch>DENY</OnMatch>  
	</filter>
</configuration>
  1. 在上面的配置中,<filter>标签用于定义一个过滤器,该过滤器会通过表达式匹配日志信息。在上面的示例中,如果日志中包含 Mapper.select/Mapper.get/Mapper.list/Mapper.query/Mapper.find/Mapper.count,则不打印日志,实现过滤查询日志的目的。需要特别注意匹配的时候要指定是通过那个字段去匹配,比如 message 不会包含打印日志的时候占位符 动态替换的内容,而 formattedMessage 不会包含 logger 也就是打印日志的原始类名和方法名,具体可以参考下面的表格。
  1. 可以根据实际需求调整过滤器配置,比如修改Marker值、修改匹配规则等。更多关于Logback过滤器的信息,请参考官方文档:https://logback.qos.ch/manual/filters.html

  2. 配置完成后,重新启动项目即可生效。此时只有包含特定关键字的日志信息会被输出到控制台或日志文件中。

通过以上步骤,即可在Spring Boot项目中使用Logback实现日志关键字过滤。

分享内容