Java 是否可以在log4j中更改包的日志级别?

Java 是否可以在log4j中更改包的日志级别?,java,logging,log4j,Java,Logging,Log4j,目前我有一个库,它将某些信息记录为错误。如果我像这样更改log4j设置: log4j.logger.com.company.theirpackage.foo=OFF 这将完全禁用库的日志记录。然而,我真正想要的是仍然能够看到这些信息,但是要以警告或信息级别记录这些信息。换句话说,当特定代码调用log.error()时,我希望它就像他们调用了log.warn()或log.info()一样 有没有办法用log4j做到这一点?不是直接的,但是您可以编写一个自定义的appender,它可以拦截调用,检

目前我有一个库,它将某些信息记录为错误。如果我像这样更改log4j设置:

log4j.logger.com.company.theirpackage.foo=OFF
这将完全禁用库的日志记录。然而,我真正想要的是仍然能够看到这些信息,但是要以警告或信息级别记录这些信息。换句话说,当特定代码调用
log.error()
时,我希望它就像他们调用了
log.warn()
log.info()
一样


有没有办法用log4j做到这一点?

不是直接的,但是您可以编写一个自定义的appender,它可以拦截调用,检查级别,然后在您想要的任何级别打印它们。或者,您可以进行一些面向方面的编程并拦截/更改它们的调用


但是你为什么要更改他们记录它的级别呢?

我认为这是可能的,通过实现一个,当它符合某些条件时,a内部的级别会更改。

我们的服务将错误视为非常糟糕的事件,而这个库将所有不重要的事情都记录为错误。我可以将日志监控更改为忽略此包中的错误,但我希望此库不要记录错误等不重要的事情。明白了。您是否正在使用Spring之类的应用程序框架?它们使方面编织变得非常简单。@Jeff,请详细说明或提供一个示例?我有类似的要求,你能改一下吗?我不认为可以。没有setLevel()方法,但可以使用反射直接设置字段。