use of org.apache.logging.log4j.util.StringMap in project logging-log4j2 by apache.
the class CopyOnWriteSortedArrayThreadContextMap method putAllValues.
@Override
public <V> void putAllValues(final Map<String, V> values) {
if (values == null || values.isEmpty()) {
return;
}
StringMap map = localMap.get();
map = map == null ? createStringMap() : createStringMap(map);
for (final Map.Entry<String, V> entry : values.entrySet()) {
map.putValue(entry.getKey(), entry.getValue());
}
map.freeze();
localMap.set(map);
}
use of org.apache.logging.log4j.util.StringMap in project logging-log4j2 by apache.
the class CopyOnWriteSortedArrayThreadContextMap method putAll.
@Override
public void putAll(final Map<String, String> values) {
if (values == null || values.isEmpty()) {
return;
}
StringMap map = localMap.get();
map = map == null ? createStringMap() : createStringMap(map);
for (final Map.Entry<String, String> entry : values.entrySet()) {
map.putValue(entry.getKey(), entry.getValue());
}
map.freeze();
localMap.set(map);
}
use of org.apache.logging.log4j.util.StringMap in project logging-log4j2 by apache.
the class CopyOnWriteSortedArrayThreadContextMap method createThreadLocalMap.
// LOG4J2-479: by default, use a plain ThreadLocal, only use InheritableThreadLocal if configured.
// (This method is package protected for JUnit tests.)
private ThreadLocal<StringMap> createThreadLocalMap() {
final PropertiesUtil managerProps = PropertiesUtil.getProperties();
final boolean inheritable = managerProps.getBooleanProperty(INHERITABLE_MAP);
if (inheritable) {
return new InheritableThreadLocal<StringMap>() {
@Override
protected StringMap childValue(final StringMap parentValue) {
return parentValue != null ? createStringMap(parentValue) : null;
}
};
}
// if not inheritable, return plain ThreadLocal with null as initial value
return new ThreadLocal<>();
}
use of org.apache.logging.log4j.util.StringMap in project logging-log4j2 by apache.
the class ContextDataAsEntryListDeserializer method deserialize.
@Override
public StringMap deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
final List<MapEntry> list = jp.readValueAs(new TypeReference<List<MapEntry>>() {
});
final StringMap contextData = new ContextDataFactory().createContextData();
for (final MapEntry mapEntry : list) {
contextData.putValue(mapEntry.getKey(), mapEntry.getValue());
}
return contextData;
}
use of org.apache.logging.log4j.util.StringMap in project logging-log4j2 by apache.
the class Log4jLogEventTest method testBuilderCorrectlyCopiesAllEventAttributesInclContextData.
@Test
public void testBuilderCorrectlyCopiesAllEventAttributesInclContextData() {
final StringMap contextData = new SortedArrayStringMap();
contextData.putValue("A", "B");
final ContextStack contextStack = ThreadContext.getImmutableStack();
final Exception exception = new Exception("test");
final Marker marker = MarkerManager.getMarker("EVENTTEST");
final Message message = new SimpleMessage("foo");
final StackTraceElement stackTraceElement = new StackTraceElement("A", "B", "file", 123);
final String fqcn = "qualified";
final String name = "Ceci n'est pas une pipe";
final String threadName = "threadName";
final Log4jLogEvent event = //
Log4jLogEvent.newBuilder().setContextData(//
contextData).setContextStack(//
contextStack).setEndOfBatch(//
true).setIncludeLocation(//
true).setLevel(//
Level.FATAL).setLoggerFqcn(//
fqcn).setLoggerName(//
name).setMarker(//
marker).setMessage(//
message).setNanoTime(//
1234567890L).setSource(//
stackTraceElement).setThreadName(//
threadName).setThrown(//
exception).setTimeMillis(987654321L).build();
assertSame(contextData, event.getContextData());
assertSame(contextStack, event.getContextStack());
assertEquals(true, event.isEndOfBatch());
assertEquals(true, event.isIncludeLocation());
assertSame(Level.FATAL, event.getLevel());
assertSame(fqcn, event.getLoggerFqcn());
assertSame(name, event.getLoggerName());
assertSame(marker, event.getMarker());
assertSame(message, event.getMessage());
assertEquals(1234567890L, event.getNanoTime());
assertSame(stackTraceElement, event.getSource());
assertSame(threadName, event.getThreadName());
assertSame(exception, event.getThrown());
assertEquals(987654321L, event.getTimeMillis());
final LogEvent event2 = new Log4jLogEvent.Builder(event).build();
assertEquals("copy constructor builder", event2, event);
assertEquals("same hashCode", event2.hashCode(), event.hashCode());
}
Aggregations