抑制来自 logback 的信息消息
suppressing info messages from logback
我工作的应用程序将被创建为 jar 文件,并且 运行 它通过命令行创建。不涉及应用程序服务器。
当我 运行 来自 logback 的信息下面的 jar 文件打印在控制台上。我如何禁止来自 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
logback.xml
<?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>
尝试了所有选项以及线程 Suppress all Logback output to console? 中的讨论。
没有任何帮助,任何指示都会有所帮助。我使用的是 logback 版本 1.0.13 和 slf4j 1.7.5
第一,方法对。
修复 WARN/ERROR
个问题。
这是相关的 logback docs。如果在 init 期间有任何 ERROR
或 WARN
级别的问题,logback 初始化期间收集的状态消息将打印到控制台。因此,摆脱控制台输出的一个好方法是修复您收到的 ERROR
和 WARN
消息。
你可以看看StaticLoggerBinder的源码。
if(!StatusUtil.contextHasStatusListener(defaultLoggerContext)) {
StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
}
它不会通过您注册的记录器,因为这些是在初始化 logback 之前生成的状态消息。这是一个 catch-22,您需要一个正确配置的 logback 上下文来记录有关它如何启动失败的错误消息。
您可以更改对这些控制台消息执行的操作,但这可能是您了解日志记录为何不起作用的唯一方法。
要在您的配置中修复的一件事是将根目录更改为
<root level="WARN">
<appender-ref ref="stdout"/>
</root>
有一条错误消息告诉您优先级不是有效元素
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]]
修改或禁止状态消息记录
在您的 logback.xml
中设置一个 statusListener
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
</configuration>
logback提供的选项有:
- NopStatusListener:什么都不做
- OnConsoleStatusListener:将所有状态消息记录到标准输出
- OnErrorConsoleStatusListener:将所有状态消息记录到 stderr
- StatusListenerAsList:在列表中收集状态供您稍后访问
我工作的应用程序将被创建为 jar 文件,并且 运行 它通过命令行创建。不涉及应用程序服务器。 当我 运行 来自 logback 的信息下面的 jar 文件打印在控制台上。我如何禁止来自 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
logback.xml
<?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>
尝试了所有选项以及线程 Suppress all Logback output to console? 中的讨论。
没有任何帮助,任何指示都会有所帮助。我使用的是 logback 版本 1.0.13 和 slf4j 1.7.5
第一,方法对。
修复 WARN/ERROR
个问题。
这是相关的 logback docs。如果在 init 期间有任何 ERROR
或 WARN
级别的问题,logback 初始化期间收集的状态消息将打印到控制台。因此,摆脱控制台输出的一个好方法是修复您收到的 ERROR
和 WARN
消息。
你可以看看StaticLoggerBinder的源码。
if(!StatusUtil.contextHasStatusListener(defaultLoggerContext)) {
StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
}
它不会通过您注册的记录器,因为这些是在初始化 logback 之前生成的状态消息。这是一个 catch-22,您需要一个正确配置的 logback 上下文来记录有关它如何启动失败的错误消息。
您可以更改对这些控制台消息执行的操作,但这可能是您了解日志记录为何不起作用的唯一方法。
要在您的配置中修复的一件事是将根目录更改为
<root level="WARN">
<appender-ref ref="stdout"/>
</root>
有一条错误消息告诉您优先级不是有效元素
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]]
修改或禁止状态消息记录
在您的 logback.xml
中设置一个statusListener
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
</configuration>
logback提供的选项有:
- NopStatusListener:什么都不做
- OnConsoleStatusListener:将所有状态消息记录到标准输出
- OnErrorConsoleStatusListener:将所有状态消息记录到 stderr
- StatusListenerAsList:在列表中收集状态供您稍后访问