我正在使用log4j2(版本-2.5),我正在尝试编写一个消息转换器插件,它将掩盖日志消息的一些已知模式.
@Plugin(name = "CustomeMasking",category = "Converter")
@ConverterKeys({"m"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
当我使用此插件运行我的Web应用程序时,我看到此警告消息
WARN Converter key ‘m’ is already mapped to ‘class
org.apache.logging.log4j.core.pattern.MessagePatternConverter’. Sorry,
Dave,I can’t let you do that! Ignoring plugin [class
MyCustomFilteringLayout].
在探索log4j2网站后,我找到了这些参考资料.
If multiple Converters specify the same ConverterKeys,then the load
order above determines which one will be used. For example,to
override the %date converter which is provided by the built-in
DatePatternConverter class,you would need to place your plugin in a
JAR file in the CLASSPATH ahead of log4j-core.jar. This is not
recommended; pattern ConverterKeys collisions will cause a warning to
be emitted. Try to use unique ConverterKeys for your custom pattern
converters.
我需要帮助才能理解如何为m / msg编写自定义转换器.有没有更好的方法呢?
额外细节:
我为MyCustomFilteringLayout创建了阴影jar.我这样做的原因是我希望将屏蔽逻辑与应用程序分开.
更新
我为自己的密钥创建了转换器,看起来像这样,
@Plugin(name = "CustomeMasking",category = "Converter")
@ConverterKeys({"cm"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
在这里,我不能为同一个ConverterKeys写入另一个转换器 – 厘米?
现在我的log4j2.xml有这个模式布局,
听起来你想要参数化你的模式.许多模式采用选项参数.您可以使用它来控制行为,因此在布局模式中指定%cm {key1}将产生与%cm {key2}不同的结果.
有关带参数的转换器示例,请参阅MdcPatternConverter的源代码.