java – 如何屏蔽log4j2日志消息

前端之家收集整理的这篇文章主要介绍了java – 如何屏蔽log4j2日志消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用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网站后,我找到了这些参考资料.

Reference

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的源代码.

猜你在找的Java相关文章