Shi*_*hir 5 java logging log4j log4j2
我正在使用log4j2(版本-2.5),我正在尝试编写一个消息转换器插件,它将掩盖日志消息的一些已知模式.
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"m"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
Run Code Online (Sandbox Code Playgroud)
当我使用此插件运行我的Web应用程序时,我看到此警告消息
WARN转换器键'm'已映射到'class org.apache.logging.log4j.core.pattern.MessagePatternConverter'.对不起,戴夫,我不能让你那样做!忽略插件[类MyCustomFilteringLayout].
在探索log4j2网站后,我找到了这些参考资料.
如果多个转换器指定相同的ConverterKeys,则上面的加载顺序将确定将使用哪个.例如,要覆盖由内置DatePatternConverter类提供的%date转换器,您需要将插件放在log4j-core.jar之前的CLASSPATH中的JAR文件中.不推荐这样做; 模式ConverterKeys冲突将导致发出警告.尝试将独特的ConverterKeys用于自定义模式转换器.
我需要帮助才能理解如何为m/msg编写自定义转换器.有没有更好的方法呢?
其他细节: 我为MyCustomFilteringLayout创建了阴影jar.我这样做的原因是我希望将屏蔽逻辑与应用程序分开.
更新
我为自己的密钥创建了转换器,看起来像这样,
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"cm"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
Run Code Online (Sandbox Code Playgroud)
在这里,我不能为同一个ConverterKeys写入另一个转换器 - 厘米?现在我的log4j2.xml有这个模式布局,
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %cm %ex%n</Pattern>
</PatternLayout>
Run Code Online (Sandbox Code Playgroud)