0

这是一个普遍的问题。

在我的代码中,我正在调用一些第 3 方库。在该库中,有一个记录器,它使用来自org.apache.commons.logging. 这些日志消息与我自己代码中的所有其他日志一起出现在我的控制台中。有没有一种简单的方法可以禁用从这个外部库打印日志消息?我不想更改我的程序的常规日志记录配置,因为我希望所有其他日志记录保持原样。

像下面的伪代码这样的东西会很有用:

ignoreLogsFrom {
  // This call is the one that produces the logging
  externalLibrary.get
}

基本上,能够阻止来自特定代码块甚至库的任何消息。

谢谢,如果你能指出我正确的方向。

4

1 回答 1

1

是的,你可以,但很难给出正确的通用建议。最重要的是它commons-logging是一个包装库:它本身不实现日志记录,而是将其委托给其他库。

通常,您必须执行的步骤是:

  1. 找出使用了什么记录器实现。默认情况下它是Log4J但它可能是别的东西(其他流行的选择包括LogbackSLF4J这是另一个门面)

  2. 查找外部库使用的记录器的名称。这是传递给LogFactory.getLog调用的参数。通常,它类似于记录的类的完全限定名称。这种命名的想法正是您想要的功能,因为它允许为应用程序的不同部分配置不同的记录器。

  3. 找出找到 #1 的库的配置存储在哪里。通常是一些属性文件或 XML 文件(如log4j.properties

  4. 找出给定命名记录器的“级别”是如何在该日志库中配置的。大多数现代日志库都支持分层配置,因此您可能更容易禁用整个外部库包而不是特定类的日志记录。

PS 可能禁用库的整个日志记录不是一个好主意,将级别提高到类似WARNERROR显着减少日志量可能就足够了,但仍然不会错过真正重要的 st

于 2019-01-09T23:48:03.937 回答