Java 以编程方式将转换器添加到Log4j2
我使用的是log4j2。我已经为它定义了自定义appender和模式,并以编程方式设置: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
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;
}
}