Logger logger = (Logger) LogManager.getRootLogger();
Configuration config = logger.getContext().getConfiguration();
List<AppenderRef> appenderRefList = new ArrayList<>();
Map<String, Appender> appenderMap = logger.getAppenders();
for (Map.Entry<String, Appender> entry : appenderMap.entrySet()) {
appenderRefList.add(AppenderRef.createAppenderRef(entry.getKey(), null, null));
logger.removeAppender(entry.getValue());
}
AppenderRef[] appenderRefs = appenderRefList.toArray(new AppenderRef[0]);
RewriteAppender rewriteAppender = RewriteAppender.createAppender(
"CustomRewriteAppender", null, appenderRefs, config, new CustomRewritePolicy(), null);
rewriteAppender.start();
logger.addAppender(rewriteAppender);
...
public final class CustomRewritePolicy implements RewritePolicy {
@PluginFactory
public static CustomRewritePolicy createPolicy() {
return new CustomRewritePolicy();
}
@Override
public LogEvent rewrite(LogEvent e) {
Log4jLogEvent.Builder builder = new Log4jLogEvent.Builder();
if (e.getMarker() != null) {
StringMap contextData = ContextDataFactory.createContextData();
contextData.putValue("_marker", e.getMarker().getName());
builder.setContextData(contextData);
}
builder.setLoggerName(e.getLoggerName());
builder.setMarker(e.getMarker());
builder.setLoggerFqcn(e.getLoggerFqcn());
builder.setLevel(e.getLevel());
builder.setMessage(new SimpleMessage(e.getMessage().getFormattedMessage())); // Замена текста
builder.setThrown(e.getThrown());
builder.setContextStack(e.getContextStack());
builder.setThreadName(e.getThreadName());
builder.setSource(e.getSource());
builder.setTimeMillis(e.getTimeMillis());
return builder.build();
}
}