在通过 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
。
我正在处理一个相当大的代码库。有很多日志被打印出来。我试图设法修改所有现有日志以屏蔽掉一些不应该打印的文本。我知道我可以找到所有这些日志并修改字符串,但由于代码大小,这几乎是不可能的,而且将来也会有人打印他们不应该打印的日志。
到目前为止我尝试的是制作一个自定义记录器 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
。