2010-01-13 60 views
3

目前我有一个库将某些信息记录为ERROR。如果我改变这样我的log4j的设置:是否可以在log4j中更改包的日志级别?

log4j.logger.com.company.theirpackage.foo=OFF 

将完全完全禁用库的记录。但是,我真正喜欢的是仍然可以看到这些信息,但是它将以WARN或INFO级别记录。换句话说,当那个特定的代码调用log.error()时,我希望它好像他们已经调用了log.warn()log.info()

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

回答

2

不是直接的,但是你可以编写一个自定义的appender来拦截调用,检查关卡,然后在你想要的任何关卡上打印它们。或者,你可以做一些面向方面的编程并拦截/改变他们的调用。

但是,你为什么要改变他们登录的级别?

+0

我们的服务将ERROR视为一个非常糟糕的事件,而这个库将各种不重要的事情记录为ERROR。我可以改变我们的日志监视来忽略来自这个包的错误,但我宁愿这个库不会记录像ERROR那样不重要的东西。 – Ross 2010-01-13 21:25:13

+0

明白了。你是否在使用像Spring这样的应用程序框架?他们使方面编织非常容易。 – 2010-01-13 21:28:21

1

我认为这是可能的,通过实施Filter,其中LoggingEvent内的级别在匹配某些条件时发生更改。

+0

你能改变关卡吗?我不认为你可以。 – 2010-01-13 22:02:27

+0

没有setLevel()方法,但可以使用reflection直接设置字段。 – Confusion 2010-01-14 07:43:03

相关问题