【发布时间】:2016-09-19 06:49:37
【问题描述】:
我想创建一个插件,在将某些字符串写入控制台日志之前隐藏它们。根据我的阅读,ConsoleLogFilter 是完美的扩展点。
从 ConsoleLogFilter 的描述中可以看出:'允许过滤写入控制台日志的信息的挂钩'
但是,唯一可以覆盖的方法是 'decorateLogger',它是 OutputStream 的输入变量,这意味着,我无法读取流并根据流过滤我想要的东西。
我错过了什么吗?
扎克
【问题讨论】:
我想创建一个插件,在将某些字符串写入控制台日志之前隐藏它们。根据我的阅读,ConsoleLogFilter 是完美的扩展点。
从 ConsoleLogFilter 的描述中可以看出:'允许过滤写入控制台日志的信息的挂钩'
但是,唯一可以覆盖的方法是 'decorateLogger',它是 OutputStream 的输入变量,这意味着,我无法读取流并根据流过滤我想要的东西。
我错过了什么吗?
扎克
【问题讨论】:
这个想法是您覆盖decorateLogger 方法并返回一个执行过滤的OutputStream。这称为The Decorator Pattern。 JDK 提供了一个FilterOutputStream 类,可以用来实现这样的过滤器。
看看Mask Passwords Plugin,它实现了密码过滤器:MaskPasswordsBuildWrapper.java
【讨论】: