Java 以编程方式将转换器添加到Log4j2

Java 以编程方式将转换器添加到Log4j2,java,log4j2,Java,Log4j2,我使用的是log4j2。我已经为它定义了自定义appender和模式,并以编程方式设置: public static void initCustomLogging(List<Appender> appenders) { LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false); Configuration configuration = loggerContext.getCon

我使用的是log4j2。我已经为它定义了自定义appender和模式,并以编程方式设置:

public static void initCustomLogging(List<Appender> appenders) {
    LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
    Configuration configuration = loggerContext.getConfiguration();
    LoggerConfig rootLoggerConfig = configuration.getLoggerConfig("");

    for (Appender appender : appenders) {
        appender.start();
        rootLoggerConfig.addAppender(appender, Level.INFO, null);
    }
    loggerContext.updateLoggers();
}
但是,我想向模式中添加自定义参数,例如[%requestInfo],在这里它将调用一些静态方法。我知道我可以像这样定义我的转换器:

@Plugin(name = "MyConverter", category = "Converter")
@ConverterKeys({"requestData"})
public class MyConverter extends LogEventPatternConverter {

    private MyConverter (final String name, final String style) {
        super(name, style);
    }

    public static MyConverter newInstance(final String[] options) {
        return new MyConverter ("requestData", "requestData");
    }

    @Override
    public void format(final LogEvent event, final StringBuilder toAppendTo) {
        toAppendTo.append(getRequestId());
    }

    private String getRequestData() {
        String data= // some static method call

        if (data== null) {
            data= "-";
        }

        return data;
    }
}
如果我是通过xml配置文件配置log4j2,这将自动获取并为我配置。但是,由于我是以编程方式对其进行配置,如何将其添加到布局中?我看不出做这件事的方法

谢谢你的帮助

@Plugin(name = "MyConverter", category = "Converter")
@ConverterKeys({"requestData"})
public class MyConverter extends LogEventPatternConverter {

    private MyConverter (final String name, final String style) {
        super(name, style);
    }

    public static MyConverter newInstance(final String[] options) {
        return new MyConverter ("requestData", "requestData");
    }

    @Override
    public void format(final LogEvent event, final StringBuilder toAppendTo) {
        toAppendTo.append(getRequestId());
    }

    private String getRequestData() {
        String data= // some static method call

        if (data== null) {
            data= "-";
        }

        return data;
    }
}