private static org.apache.logging.log4j.Marker convertMarker(final Marker original, final Collection<Marker> visited) { final org.apache.logging.log4j.Marker marker = MarkerManager.getMarker(original.getName()); if (original.hasReferences()) { final Iterator<Marker> it = original.iterator(); while (it.hasNext()) { final Marker next = it.next(); if (visited.contains(next)) { LOGGER.warn("Found a cycle in Marker [{}]. Cycle will be broken.", next.getName()); } else { visited.add(next); marker.addParents(convertMarker(next, visited)); } } } return marker; }
@Override public boolean hasReferences() { return marker.hasReferences(); }
@Override public void add(Marker reference) { if(reference instanceof LogstashMarker) { // limit to one level to make things a bit less complicated if(reference.hasReferences()) { throw new IllegalArgumentException("Please do not nest markers in more than one level"); } super.add(reference); } else { throw new IllegalArgumentException("Expected marker instance of " + LogstashMarker.class.getName()); } }
public static String getMarkerName(Marker marker) { StringBuffer sb = new StringBuffer(); sb.append(marker.getName()); if (marker.hasReferences()) { // follow only first reference. Multiple references will be ignored. Marker reference = (Marker) marker.iterator().next(); sb.append("."); sb.append(getMarkerName(reference)); } return sb.toString(); }
private List<String> resolveMarkerNames(final Marker marker) { if (marker != null) { final List<String> result = new ArrayList<String>(); result.add(marker.getName()); if (marker.hasReferences()) { for (final Iterator<Marker> iter = marker.iterator(); iter.hasNext();) { final Marker next = iter.next(); result.addAll(resolveMarkerNames(next)); } } return result; } return Collections.emptyList(); } }
private void writeLogstashMarkerIfNecessary(JsonGenerator generator, Marker marker) throws IOException { if (marker != null) { if (isLogstashMarker(marker)) { ((LogstashMarker) marker).writeTo(generator); } if (marker.hasReferences()) { for (Iterator<?> i = marker.iterator(); i.hasNext();) { Marker next = (Marker) i.next(); writeLogstashMarkerIfNecessary(generator, next); } } } }
private static org.apache.logging.log4j.Marker convertMarker(final Marker original, final Collection<Marker> visited) { final org.apache.logging.log4j.Marker marker = MarkerManager.getMarker(original.getName()); if (original.hasReferences()) { final Iterator<Marker> it = original.iterator(); while (it.hasNext()) { final Marker next = it.next(); if (visited.contains(next)) { LOGGER.warn("Found a cycle in Marker [{}]. Cycle will be broken.", next.getName()); } else { visited.add(next); marker.addParents(convertMarker(next, visited)); } } } return marker; }
static void printMarker(final Marker marker, final Appendable wr, final EscapeJsonStringAppendableWrapper wrapper) throws IOException { if (marker.hasReferences()) { wr.append('{'); wr.append('"'); wrapper.append(marker.getName()); wr.append("\":["); Iterator<Marker> it = marker.iterator(); if (it.hasNext()) { printMarker(it.next(), wr, wrapper); while (it.hasNext()) { wr.append(','); printMarker(it.next(), wr, wrapper); } } wr.append("]}"); } else { wr.append('"'); wrapper.append(marker.getName()); wr.append('"'); } }
@SuppressWarnings("deprecation") private boolean writeTagIfNecessary(JsonGenerator generator, boolean hasWrittenStart, final Marker marker) throws IOException { if (!marker.getName().equals(JsonMessageJsonProvider.JSON_MARKER_NAME) && !LogstashMarkersJsonProvider.isLogstashMarker(marker)) { if (!hasWrittenStart) { generator.writeArrayFieldStart(getFieldName()); hasWrittenStart = true; } generator.writeString(marker.getName()); } if (marker.hasReferences()) { for (Iterator<?> i = marker.iterator(); i.hasNext();) { Marker next = (Marker) i.next(); hasWrittenStart |= writeTagIfNecessary(generator, hasWrittenStart, next); } } return hasWrittenStart; }
public static Marker convertMarker(org.slf4j.Marker input) { Marker output = MarkerManager.getMarker(input.getName()); if (input.hasReferences()) { Iterator i = input.iterator(); while (i.hasNext()) { org.slf4j.Marker ref = (org.slf4j.Marker)i.next(); output.addParents(convertMarker(ref)); } } return output; }
private Marker initMarkerRecursive(org.slf4j.Marker origMarker, Map<String, Marker> markers) { if(origMarker == null) { return null; } String name = origMarker.getName(); if(markers.containsKey(name)) { return markers.get(name); } Marker newMarker = new Marker(name); markers.put(name, newMarker); if(origMarker.hasReferences()) { Iterator iter = origMarker.iterator(); while(iter.hasNext()) { org.slf4j.Marker current = (org.slf4j.Marker) iter.next(); newMarker.add(initMarkerRecursive(current, markers)); } } return newMarker; } }
private Marker initMarkerRecursive(org.slf4j.Marker origMarker, Map<String, Marker> markers) { if(origMarker == null) { return null; } String name = origMarker.getName(); if(markers.containsKey(name)) { return markers.get(name); } Marker newMarker = new Marker(name); markers.put(name, newMarker); if(origMarker.hasReferences()) { Iterator iter = origMarker.iterator(); while(iter.hasNext()) { org.slf4j.Marker current = (org.slf4j.Marker) iter.next(); newMarker.add(initMarkerRecursive(current, markers)); } } return newMarker; }
public FilterReply decide(ILoggingEvent event) { if (!isStarted()) { return FilterReply.NEUTRAL; } // make sure the event has a marker Marker eventMarker = event.getMarker(); if (eventMarker == null) { return FilterReply.DENY; } if (eventMarker.hasReferences()) { // check for events with multiple markers for (Marker marker : markersToMatch) { if (eventMarker.contains(marker)) { return acceptAll ? FilterReply.ACCEPT : FilterReply.NEUTRAL; } } } else { // handle simple case of an event with a single marker if (markersToMatch.contains(eventMarker)) { return acceptAll ? FilterReply.ACCEPT : FilterReply.NEUTRAL; } } // no match found for security markers return FilterReply.DENY; }
public FilterReply decide(ILoggingEvent event) { if (!isStarted()) { return FilterReply.NEUTRAL; } // make sure the event has a marker Marker eventMarker = event.getMarker(); if (eventMarker == null) { return FilterReply.NEUTRAL; } if (eventMarker.hasReferences()) { // check for events with multiple markers for (Marker marker : markersToMatch) { if (eventMarker.contains(marker)) { return FilterReply.DENY; } } } else { // handle simple case of an event with a single marker if (markersToMatch.contains(eventMarker)) { return FilterReply.DENY; } } // no classified markers found return FilterReply.NEUTRAL; }
if(marker.hasReferences()) { Iterator<Marker> iterator = marker.iterator(); while(iterator.hasNext()) {
@Override public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOException { // write only mdc data from domains which have no marker within the current event Marker marker = event.getMarker(); if(marker == null) { writeFullContext(generator); } else if(marker instanceof MdcListMarker) { // all mdc data already captured } else if(!marker.hasReferences()) { if(marker instanceof DomainMarker) { writeContextForFilteredMarker(generator, marker); } else { writeFullContext(generator); } } else { writeContextForFilteredMarkerAndReferences(generator, marker); } }