Log4j2自定义Converter插件不起作用

时间:2020-01-29 17:15:31

标签: log4j

我在公共库中有一个自定义的Converter插件,并且正在使用服务中的公共库(Spring Boot应用程序)。公共库和服务都是gradle项目。它在本地工作正常,不适用于preprod。 preprod env是一个云,我们通过dockerize服务。

我尝试在preprod上将已部署的jar文件提取到docker容器中,并且它具有带有自定义转换器插件的正确版本的公共库。

为了避免冲突,我从服务以及公共库中排除了spring-boot-starter-logging依赖项。

我还观察到,在preprod env中,从未调用过插件中的newInstance()方法,而是调用了构造函数,这就是为什么它无法识别自定义模式转换器键“ ckeymsg”的原因。

这是我的转换器-

package something.logging

@Plugin(name="Log4j2MaskConverter", category = PatternConverter.CATEGORY)
@ConverterKeys({"ckeymsg"})
public class Log4j2MaskConverter extends LogEventPatternConverter {

    // logger is instantiated here

    protected Log4j2MaskConverter(String name, String style) {
        logger.info("in the constructor");
        super(name, style);
    }

    public static Log4j2MaskConverter newInstance(String[] options) {
        logger.info("in the newInstance method");
        return new Log4j2MaskConverter("ckeymsg", Thread.currentThread().getName());
    }

    private void initConfig() {
    }
}

Log4j2.xml-

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" packages="something.logging">
     .
     .
     .
</Configuration>

对此有任何帮助吗?我不确定那里发生了什么。

0 个答案:

没有答案