如何在SpringBoot中禁用图片与CSS文件的日志输出
解决SpringBoot中CSS、图片等静态资源日志过滤问题
默认情况下SpringBoot会打印DispatcherServlet处理的所有请求日志,包括CSS、图片这类静态资源,以下是几种实用的过滤方案:
一、针对默认Logback框架的配置
方案1:通过日志级别快速过滤
静态资源请求一般是INFO级别的,直接把DispatcherServlet的日志级别调到WARN,就能屏蔽这类日志,同时保留WARN及以上的重要日志。
在application.properties中添加:
logging.level.org.springframework.web.servlet.DispatcherServlet=WARN
或者application.yml:
logging: level: org.springframework.web.servlet.DispatcherServlet: WARN
方案2:精细过滤特定后缀资源
如果需要保留DispatcherServlet的其他INFO日志,仅排除静态资源,可以在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> </encoder> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator"> <expression> logger.contains("org.springframework.web.servlet.DispatcherServlet") && (message.contains(".css") || message.contains(".js") || message.contains(".png") || message.contains(".jpg") || message.contains(".gif")) </expression> </evaluator> <OnMatch>DENY</OnMatch> </filter> </appender> <!-- 其他配置... --> </configuration>
二、针对Log4j2框架的配置
如果你的项目用Log4j2,可在log4j2-spring.xml中添加过滤规则:
<Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/> <Filters> <ScriptFilter onMatch="DENY" onMisMatch="NEUTRAL"> <Script language="javascript"> loggerName.contains("org.springframework.web.servlet.DispatcherServlet") && (message.contains(".css") || message.contains(".png") || message.contains(".jpg") || message.contains(".js")) </Script> </ScriptFilter> </Filters> </Console> </Appenders>
同样,也可以通过调整日志级别快速实现:
<Logger name="org.springframework.web.servlet.DispatcherServlet" level="WARN" additivity="false"> <AppenderRef ref="Console"/> </Logger>
内容的提问来源于stack exchange,提问作者Arun Chouhan
相关产品推荐
相关产品推荐

