1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.jackson;
18
19 import org.apache.logging.log4j.Level;
20 import org.apache.logging.log4j.Marker;
21 import org.apache.logging.log4j.ThreadContext.ContextStack;
22 import org.apache.logging.log4j.core.LogEvent;
23 import org.apache.logging.log4j.core.impl.ExtendedStackTraceElement;
24 import org.apache.logging.log4j.core.impl.ThrowableProxy;
25 import org.apache.logging.log4j.message.Message;
26 import org.apache.logging.log4j.message.ObjectMessage;
27
28 import com.fasterxml.jackson.databind.Module.SetupContext;
29 import com.fasterxml.jackson.databind.module.SimpleModule;
30 import org.apache.logging.log4j.core.time.Instant;
31
32
33
34
35
36
37
38 class Initializers {
39
40
41
42
43 static class SetupContextInitializer {
44
45 void setupModule(final SetupContext context, final boolean includeStacktrace, final boolean stacktraceAsString) {
46
47 context.setMixInAnnotations(StackTraceElement.class, StackTraceElementMixIn.class);
48
49 context.setMixInAnnotations(Marker.class, MarkerMixIn.class);
50 context.setMixInAnnotations(Level.class, LevelMixIn.class);
51 context.setMixInAnnotations(Instant.class, InstantMixIn.class);
52 context.setMixInAnnotations(LogEvent.class, LogEventWithContextListMixIn.class);
53
54 context.setMixInAnnotations(ExtendedStackTraceElement.class, ExtendedStackTraceElementMixIn.class);
55 context.setMixInAnnotations(ThrowableProxy.class,
56 includeStacktrace ? (stacktraceAsString ? ThrowableProxyWithStacktraceAsStringMixIn.class : ThrowableProxyMixIn.class ) : ThrowableProxyWithoutStacktraceMixIn.class);
57 }
58 }
59
60
61
62
63
64
65 static class SetupContextJsonInitializer {
66
67 void setupModule(final SetupContext context, final boolean includeStacktrace, final boolean stacktraceAsString) {
68
69 context.setMixInAnnotations(StackTraceElement.class, StackTraceElementMixIn.class);
70
71 context.setMixInAnnotations(Marker.class, MarkerMixIn.class);
72 context.setMixInAnnotations(Level.class, LevelMixIn.class);
73 context.setMixInAnnotations(Instant.class, InstantMixIn.class);
74 context.setMixInAnnotations(LogEvent.class, LogEventJsonMixIn.class);
75
76 context.setMixInAnnotations(ExtendedStackTraceElement.class, ExtendedStackTraceElementMixIn.class);
77 context.setMixInAnnotations(ThrowableProxy.class,
78 includeStacktrace ? (stacktraceAsString ? ThrowableProxyWithStacktraceAsStringMixIn.class : ThrowableProxyMixIn.class ) : ThrowableProxyWithoutStacktraceMixIn.class);
79 }
80 }
81
82
83
84
85 static class SimpleModuleInitializer {
86 void initialize(final SimpleModule simpleModule, final boolean objectMessageAsJsonObject) {
87
88
89 simpleModule.addDeserializer(StackTraceElement.class, new Log4jStackTraceElementDeserializer());
90 simpleModule.addDeserializer(ContextStack.class, new MutableThreadContextStackDeserializer());
91 if (objectMessageAsJsonObject) {
92 simpleModule.addSerializer(ObjectMessage.class, new ObjectMessageSerializer());
93 }
94 simpleModule.addSerializer(Message.class, new MessageSerializer());
95 }
96 }
97
98 }