dfa1 commented on a change in pull request #770:
URL: https://github.com/apache/logging-log4j2/pull/770#discussion_r829339159
##########
File path:
log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarkerFactory.java
##########
@@ -113,26 +125,19 @@ public boolean exists(final String name) {
return markerMap.containsKey(name);
}
- /**
- * Log4j does not support detached Markers. This method always returns
false.
- * @param name The Marker name.
- * @return {@code false}
- */
@Override
public boolean detachMarker(final String name) {
- return false;
+ if (name == null) {
+ return false;
+ }
+ detachedMarkers.add(name);
+ return true;
}
- /**
- * Log4j does not support detached Markers for performance reasons. The
returned Marker is attached.
- * @param name The Marker name.
- * @return The named Marker (unmodified).
- */
@Override
public Marker getDetachedMarker(final String name) {
- LOGGER.warn("Log4j does not support detached Markers. Returned Marker
[{}] will be unchanged.", name);
- return getMarker(name);
+ final org.apache.logging.log4j.Marker log4jMarker =
MarkerManager.getMarker(name);
Review comment:
thanks @rgoers for your time! In my use case a `Marker` contains health
check data, a POJO that gets serialized in JSON for structured logging.
The only advantage of detached markers is that they can be garbage collected
as soon as they not needed anymore... but you're right, this method is not
fulfilling this promise (because it is delegating to the `MarkerFactory` that
is caching it).
Let me try to fix that :-)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]