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

我可以使用log4j在Java方法中设置日志记录级别吗?,java,log4j,Java,Log4j,我在一个类中有一个方法非常冗长,这使得日志很难阅读。我想通过改变一个方法的级别来减少它的日志记录,保持同一类中的其他方法不变。这可能吗?您可以更改该类的级别配置,但不能更改类中特定方法的级别配置。唯一的方法是在该方法中使用不同的记录器,然后在不同的级别对其进行配置 希望这能有所帮助。我不认为只为一种方法直接更改日志记录方法是可行的您不能基于每种方法更改日志记录级别。“记录器”是用于控制的最精细的粒度级别。通常,记录器实例和类之间存在一对一的关系。。。尽管这取决于应用程序的编码方式 如果可以更改代

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

您可以更改该类的级别配置,但不能更改类中特定方法的级别配置。唯一的方法是在该方法中使用不同的记录器,然后在不同的级别对其进行配置


希望这能有所帮助。

我不认为只为一种方法直接更改日志记录方法是可行的

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

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


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

这是可能的。见我对OP的评论

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


Ofc在该方法中,您不会使用Logger快捷方式访问日志记录方法,但您应该使用Logger.log(级别,对象)和Logger.log(级别,对象,Thowable)方法。

您可以声明自己的日志记录级别并在该方法中使用它。另一种方法有点老套,包括在方法中提高日志级别(通过Logger.setLevel()),但它真的很聪明