我在我的代码中使用了一个库,它有以下logback.xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date - %-5p %t %-25logger{0} %F:%L %m%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
我无法控制此.xml文件,因为库作者拥有此文件,我只是将她的库用作jar文件。
现在当我将库用作jar时,我在输出中看到了很多“INFO”语句。我想从这个库中关闭记录器的输出。
我不想为我的应用程序全局关闭(或提高日志的严重性)。我只想让这个库中的日志静音。
我该怎么做?
答案 0 :(得分:3)
您可以将logback.xml的位置指定为系统属性,然后您可以更改它。
正如logback文档所说:
将默认配置文件的位置指定为系统属性
您可以使用名为“logback.configurationFile”的系统属性指定默认配置文件的位置。此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。
java -Dlogback.configurationFile = / path / to / config.xml chapters.configuration.MyApp1
请注意,文件扩展名必须为“.xml”或“.groovy”。其他扩展名被忽略。显式注册状态侦听器可能有助于调试查找配置文件的问题。
<强>更新强>
要禁止指定包中的日志,可以在logback.xml中定义记录器。
E.g。要禁止“io.netty”包中的日志,请将&lt; logger name =“io.netty”level =“WARN”/&gt; 添加到logback.xml。
答案 1 :(得分:1)
我能够解决问题。我正在为其他人列出我的解决方案。
所以问题是我们有多个库,每个库都有自己的记录器。我们想要一些而不是其他人的输出。我们可以通过下面的例子轻松模拟这个
height
现在让我们说我们要保留Foo记录器的输出但不想要Bar logger的输出。
我们将调整我们的logback.xml,如
content
这里我们为foo明确设置一个记录器,并将其级别设置为trace并将root设置为off。所有没有特定记录器的人都将进入root用户,无法记录任何内容。