我可以使用log4j在Java方法中设置日志记录级别吗?

时间:2012-11-12 12:57:56

标签: java log4j

我在一个非常详细的类中有一个方法,这使得日志难以阅读。我想通过改变那个方法的级别来减少它的日志记录,让同一个类中的其他方法保持不变。这可能吗?

4 个答案:

答案 0 :(得分:7)

您可以更改该类的级别配置,但不能更改类中的特定方法。做你想做的事的唯一方法是在该方法中使用不同的记录器,然后在不同的级别配置它。

希望这有帮助。

答案 1 :(得分:3)

您无法基于每个方法更改日志记录级别。 “记录器”是控制的最佳粒度级别。通常,记录器实例和类之间存在一对一的关系......但这取决于应用程序的编码方式。

如果您可以更改代码,我建议您为噪声方法创建特殊的记录器对象,以便您可以独立于使用现有记录器的其他代码来控制它。 (或者只是改变方法的记录器调用。)

如果您无法更改代码,则可能不得不求助于“黑客”,例如对日志文件进行后处理,或编写和配置禁止不需要的日志消息的自定义Appender

答案 2 :(得分:0)

我认为直接改变只有方法的记录方法

是不可能的

答案 3 :(得分:-1)

这是可能的。请参阅我对OP的评论。

诀窍是创建一个自定义级别(小于TRACE)(如here中所述)并在非常详细的方法中使用该日志级别。

在该方法中,您不会将Logger快捷方式用于记录方法,但您应该使用Logger.log(Level,Object)和Logger.log(Level,Object,Thowable)方法。