Scala 如何禁用打印外部代码输出的日志消息?

Scala 如何禁用打印外部代码输出的日志消息?,scala,logging,external,disable,Scala,Logging,External,Disable,这是一个一般性问题 在我的代码中,我正在调用某个第三方库。在该库中,有一个记录器,它使用日志工厂从org.apache.commons.logging输出日志消息。这些日志消息与我自己代码中的所有其他日志一起出现在我的控制台中。有没有一种简单的方法可以禁用打印来自此外部库的日志消息?我不想更改程序的常规日志记录配置,因为我希望所有其他日志记录都保持原样 下面的伪代码可能会很有用: ignoreLogsFrom { // This call is the one that produces t

这是一个一般性问题

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

下面的伪代码可能会很有用:

ignoreLogsFrom {
  // This call is the one that produces the logging
  externalLibrary.get
}
基本上,能够防止来自特定代码块甚至库的任何消息


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

是的,你可以,但很难给出正确的一般建议。这是一个包装器库:它本身并不实现日志记录,而是将其委托给其他库

通常,您必须执行以下步骤:

  • 了解所使用的记录器实现。默认情况下,它是,但可能是其他东西(其他流行的选择包括或哪一个是另一个门面)

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

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

  • 了解给定命名记录器的“级别”是如何在该日志库中配置的。大多数现代日志库都支持分层配置,因此您可以更轻松地禁用整个外部库包的日志记录,而不是特定类的日志记录

  • 另外,可能禁用库的整个日志记录不是一个好主意,将级别提高到
    WARN
    ERROR
    就足够了,这样可以显著减少日志数量,但仍然不会错过真正重要的