在通过 log4j 打印之前自定义文本

Customize text before bring print through log4j

我正在处理一个相当大的代码库。有很多日志被打印出来。我试图设法修改所有现有日志以屏蔽掉一些不应该打印的文本。我知道我可以找到所有这些日志并修改字符串,但由于代码大小,这几乎是不可能的,而且将来也会有人打印他们不应该打印的日志。

到目前为止我尝试的是制作一个自定义记录器 class return Logger 界面的修改版本(Logger.getLogger() [=22= 的界面]s) 在打印前处理字符串。这工作正常,但这意味着我将不得不用我的新自定义 class 替换 Logger.getLogger() 的所有实例,但同样由于代码大小,这不是我能做的。

那么有没有 Logger.getLogger() 到 return 我自己的 Logger 接口实现?

找到解决方案。

据我所知,没有办法让Logger.getLogger()到return自定义实现Logger接口。 然而,我们可以扩展 PatternLayout class log4j 用来格式化日志。 class 使我们能够访问方法调用 format,该方法将 LoggingEvent 作为参数。我们可以覆盖此方法并修改包含打印日志的 LoggingEvent