I\'m trying to code my own RewritePolicy in Log4j2. The documentation states that :
RewritePolicy is an interface that allows implementations to insp
Your custom rewrite policy should be coded as a log4j2 plugin. This enables you to configure your custom RewritePolicy in a RewriteAppender.
@Plugin(name = "InjectMarkerPolicy", category = "Core",
elementType = "rewritePolicy", printObject = true)
public final class MarkerInjectorRewritePolicy implements RewritePolicy {
@Override
public LogEvent rewrite(final LogEvent event) {
final Marker marker = event.getMarker();
if (marker == null)
return event;
// If there's a Marker, add it to the ThreadContextMap
// so the RoutingAppender can properly routes log messages
// event's context map is immutable, so need to make a copy...
Map mdc = new HashMap<>(event.getContextMap());
mdc.put("_marker", marker.getName());
LogEvent result = new Log4jLogEvent(event.getLoggerName(), event.getMarker(),
event.getLoggerFqcn(), event.getLevel(), event.getMessage(),
event.getThrown(), mdc, event.getContextStack(),
event.getThreadName(), event.getSource(), event.getTimeMillis());
return result;
}
}
Example config (TODO: set correct value for packages attribute):