抑制 logback 中的信息消息

prr*_*red 1 logback slf4j

我工作的应用程序将创建为 jar 文件并通过命令行运行它。不涉及应用程序服务器。当我运行 jar 文件时,来自 logback 的信息会打印在控制台上。如何抑制 logback 包中的所有日志记录

13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
13:46:30,534 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/Users/util/target/classes/logback.xml]
13:46:30,588 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
13:46:35,598 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:46:35,605 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [stdout]
13:46:35,621 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
13:46:35,629 |-WARN in ch.qos.logback.classic.encoder.PatternLayoutEncoder@326de728 - [outputPatternAsPresentationHeader] property is deprecated. Please use [outputPatternAsHeader] option instead.
13:46:35,661 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.springframework] to false
13:46:35,661 |-INFO in ch.qos.logback.classic.joran.action.LevelAction - org.springframework level set to ERROR
13:46:35,661 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [stdout] to Logger[org.springframework]
13:46:35,661 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [ch.qos.logback] to OFF
13:46:35,661 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [ch.qos.logback] to false
13:46:35,665 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:27 - no applicable action for [priority], current ElementPath  is [[configuration][root][priority]]
13:46:35,666 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [stdout] to Logger[ROOT]
13:46:35,666 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
13:46:35,666 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@25618e91 - Registering current configuration as safe fallback point
Run Code Online (Sandbox Code Playgroud)

日志记录文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

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

    <logger name="org.springframework" additivity="false">
        <level value="error"/>
        <appender-ref ref="stdout"/>
    </logger>

    <logger name="ch.qos.logback" level="OFF" additivity="false" />

    <root>
        <priority value="warn"/>
        <appender-ref ref="stdout"/>
    </root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

尝试了所有选项以及线程中的讨论抑制所有 Logback 输出到控制台?

没有任何帮助我,任何指示都会有帮助。我使用的是 logback 版本 1.0.13 和 slf4j 1.7.5

rob*_*oby 5

首先,方法正确。

解决WARN/ERROR问题。

这是相关的logback 文档。如果init 期间出现任何问题ERROR或级别问题,则 logback 初始化期间收集的状态消息将打印到控制台。WARN因此,摆脱控制台输出的一个好方法是修复您收到的ERROR和消息。WARN

您可以查看StaticLoggerBinder的源代码。

 if(!StatusUtil.contextHasStatusListener(defaultLoggerContext)) {
   StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
 }
Run Code Online (Sandbox Code Playgroud)

它不会通过您注册的记录器,因为这些是在 logback 初始化之前生成的状态消息。这是第 22 条军规,您需要正确配置的 logback 上下文来记录有关启动失败的错误消息。

您可以更改对这些控制台消息的处理方式,但这可能是您了解日志记录不起作用的唯一原因。

配置中需要解决的一件事是将根更改为

<root level="WARN">
    <appender-ref ref="stdout"/>
</root>
Run Code Online (Sandbox Code Playgroud)

有一条错误消息告诉您优先级不是有效元素

13:46:35,665 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:27 - no applicable action for [priority], current ElementPath  is [[configuration][root][priority]]
Run Code Online (Sandbox Code Playgroud)

修改或禁止状态消息记录

statusListener在 logback.xml 中设置

<configuration>
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />  
</configuration>
Run Code Online (Sandbox Code Playgroud)

logback提供的选项有:

  • NopStatusListener :什么都不做
  • OnConsoleStatusListener :将所有状态消息记录到标准输出
  • OnErrorConsoleStatusListener :将所有状态消息记录到 stderr
  • StatusListenerAsList :收集列表中的状态供您稍后访问