This is a general question.
In my code, I'm calling some 3rd party library. In that library, there is a logger that outputs log messages using the log factory from org.apache.commons.logging
. These log messages are appearing in my console, alongside all the other logs from my own code. Is there an easy way to disable printing of log messages from this external library? I don't want to change general logging configurations for my program, since I want all the other logging just the way it is.
Something like the pseudocode below would be useful:
ignoreLogsFrom {
// This call is the one that produces the logging
externalLibrary.get
}
Basically, being able to prevent any messages that emanate from a particular block of code or even library.
Thanks if you can point me in the right direction.
答案 0 :(得分:1)
是的,可以,但是很难给出正确的通用建议。稀疏之处在于commons-logging
是一个包装库:它本身并不实现日志记录,而是将其委托给其他一些库。
通常要做的步骤是:
找出所使用的记录器实现。默认情况下,它是Log4J,但可能还有其他含义(其他流行的选择包括Logback或SLF4J,这是另一个外观)
查找外部库使用的记录器的名称。这是传递给LogFactory.getLog
调用的参数。通常,它类似于要记录的类的完全限定名称。命名的想法正是您想要的功能,因为它允许为应用程序的不同部分配置不同的记录器。
找出找到的库1的配置存储在何处。通常,它是一些属性文件或XML文件(例如log4j.properties
)
了解如何在该日志记录库中配置给定命名记录器的“级别”。大多数现代日志记录库支持分层配置,因此您可能更容易禁用整个外部库程序包而不是特定类的日志记录。
P.S。可能要禁用该库的整个日志记录不是一个好主意,将其级别提高到WARN
或ERROR
之类足以显着减少日志量,但仍然不要错过真正重要的日志st