【问题标题】:How to disable console logging in spring-boot?如何在spring-boot中禁用控制台日志记录?
【发布时间】:2017-10-10 15:11:59
【问题描述】:

我正在使用 spring-boot 的默认日志记录配置。

如何防止控制台输出,同时将日志记录到配置有logging.file=myfile.log 的日志文件中?

我的目标是没有控制台窗口输出,而只记录到该文件。

无需创建特定的logback.xml 配置。因为我使用spring-boot 不必自己配置日志记录。

【问题讨论】:

标签: java spring logging spring-boot


【解决方案1】:
  1. 在应用程序的 /resources/ 文件夹中创建一个 logback-spring.xml 文件。
  2. 将以下内容复制到logback-spring.xml中
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
    <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%m%n</pattern>
        </encoder>
    </appender>
    <root level = "INFO">
        <appender-ref ref = "STDOUT"/>
    </root>
</configuration>

【讨论】:

  • 你可以添加:
【解决方案2】:

事实证明,如果我将以下属性设置为空,控制台日志记录将被禁用:

logging.pattern.console=

或者用xml注释一下

  <!--<root level="error">-->
        <!--<appender-ref ref="console"/>-->
    <!--</root>-->

【讨论】:

  • 不漂亮,但这几乎是在不添加 logback.xml 的情况下禁用控制台日志记录的唯一方法。在我的用例中,添加额外的文件会很重要。
  • 您的方法甚至会禁止打印在应用程序启动时看到的日志。更好的选择是将网络通话记录禁用为 - “logging.level.org.springframework.web=OFF”。看看应用程序是否启动成功其实很重要。
  • 新版本出现错误:ch.qos.logback.classic.PatternLayout("") - Empty or null pattern
【解决方案3】:

我创建了一个名为 logback.xml 的文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework" level="ERROR"/>
    <logger name="org.hibernate" level="ERROR"/>
</configuration>

查看此链接了解更多信息:https://www.mkyong.com/spring-boot/spring-boot-test-how-to-stop-debug-logs/

【讨论】:

  • 谢谢杰克逊!正是我想要的!
【解决方案4】:

所有受支持的日志记录系统都可以使用“logging.level.*=LEVEL”在 Spring 环境中设置记录器级别,其中“LEVEL”是 TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF 之一。可以使用logging.level.root 配置根记录器。示例 application.properties:

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

查看此信息:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

您还可以覆盖logback 配置并为其提供值OFF

<configuration>
  <!-- turn OFF all logging (children can override) -->
  <root level="OFF">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

您可以在以下链接中找到更多信息:https://logback.qos.ch/manual/configuration.html#rootElement

【讨论】:

  • logging.level.root=OFF 完全阻止记录。还有日志文件,这里不打算这样做。