在 Spring Boot 上禁用应用程序的控制台日志记录
Posted
技术标签:
【中文标题】在 Spring Boot 上禁用应用程序的控制台日志记录【英文标题】:Disable console logging for application on Spring Boot 【发布时间】:2018-02-27 19:15:48 【问题描述】:我需要在我的 Web 应用程序的控制台中禁用应用程序日志。我在 logback-spring.xml 下面强制 spring 使用文件附加程序而不是控制台附加程序。但是,现在的问题是我的应用程序日志是用所有包中的所有日志写入的,即使是那些未在 logback-spring.xml 中指定的日志
<?xml version="1.0" encoding="UTF-8"?>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<springProfile name="local,dev,qa,prodsup,perftest">
<logger name="org.application.folder" level="debug" />
<logger name="org.springframework.*" level="debug" />
<root level="debug">
<appender-ref ref="FILE" />
</root>
</springProfile>
<springProfile name="prod">
<logger name="org.application.folder" level="error" />
<logger name="org.springframework.core " level="error" />
<logger name="org.springframework.beans" level="error" />
<logger name="org.springframework.context" level="error" />
<logger name="org.springframework.transaction" level="error" />
<logger name="org.springframework.web" level="error" />
<logger name="org.springframework.test" level="error" />
<logger name="org.springframework.boot.context" level="error"/>
</springProfile>
我正在使用 Spring Boot 1.5.2。 我使用 logging.file 键在 application.properties 中指定了日志文件位置。我目前正在使用 Websphere,但嵌入式 tomcat 也面临同样的问题。
谢谢。
【问题讨论】:
您所包含的配置文件的内容是什么(默认值和文件附加程序)? 它们是spring-boot提供的基础文件。 defaults.xml(github.com/spring-projects/spring-boot/blob/master/spring-boot/…) 的 Git 链接。 file-appender.xml 的 Git 链接 (github.com/spring-projects/spring-boot/blob/master/spring-boot/…) 也许 Spring Boot 根本没有读取您的logback-spring.xml
?也许 Logback 正在从另一个文件初始化自己,也许它在 logback-spring.xml
之前的类路径上找到了 logback.xml
或 logback-test.xml
。或者它可能在类路径中找不到 any 配置文件,因此它使用默认配置运行。如果你使用-Dlogback.debug=true
运行你的应用程序,那么 Logback 将写入日志消息(到控制台),告诉你它从哪里配置自己。
我添加了 -Dlogback.debug=true 并且配置看起来正确。我在查看日志时发现了问题。
【参考方案1】:
我想我错过了日志记录的基础知识。我已将根记录器配置为使用 file-appender,这就是为什么所有包中的所有日志都存在于我的配置文件中的原因。(LOG_FILE env 属性值或应用程序属性中的 logging.file。)我更改了 logback-spring .xml 如下,它按我的预期工作。
<?xml version="1.0" encoding="UTF-8"?>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<springProfile name="local,dev,qa,prodsup,perftest">
<logger name="org.application.folder" level="debug" >
<appender-ref ref="FILE" />
</logger>
<logger name="org.springframework" level="debug" >
<appender-ref ref="FILE" />
</logger>
</springProfile>
【讨论】:
以上是关于在 Spring Boot 上禁用应用程序的控制台日志记录的主要内容,如果未能解决你的问题,请参考以下文章
Swagger + spring boot + jwt + 如何禁用特定 API 的授权按钮
我的 Spring Boot 应用程序的 /health 端点正在发出有关在同一台机器上运行的 Consul 服务器的所有信息。如何禁用此功能?
从 Spring-Boot 测试中排除 elasticsearchTemplate