在 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.xmllogback-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中设置禁用浏览器缓存?

我的 Spring Boot 应用程序的 /health 端点正在发出有关在同一台机器上运行的 Consul 服务器的所有信息。如何禁用此功能?

从 Spring-Boot 测试中排除 elasticsearchTemplate

如何禁用嵌入式数据库 Spring-boot spring-data-jpa

禁用 Spring Boot Webclient 日志