@@ -67,12 +67,14 @@ public class LoggingAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
6767
6868 private volatile Logging logging ;
6969 private List <LoggingEnhancer > loggingEnhancers ;
70+ private List <LoggingEventEnhancer > loggingEventEnhancers ;
7071 private WriteOption [] defaultWriteOptions ;
7172
7273 private Level flushLevel ;
7374 private String log ;
7475 private String resourceType ;
7576 private Set <String > enhancerClassNames = new HashSet <>();
77+ private Set <String > loggingEventEnhancerClassNames = new HashSet <>();
7678
7779 /**
7880 * Batched logging requests get immediately flushed for logs at or above this level.
@@ -114,6 +116,11 @@ public void setResourceType(String resourceType) {
114116 public void addEnhancer (String enhancerClassName ) {
115117 this .enhancerClassNames .add (enhancerClassName );
116118 }
119+
120+ public void addLoggingEventEnhancer (String enhancerClassName ) {
121+ this .loggingEventEnhancerClassNames .add (enhancerClassName );
122+ }
123+
117124
118125 Level getFlushLevel () {
119126 return (flushLevel != null ) ? flushLevel : Level .ERROR ;
@@ -128,11 +135,19 @@ MonitoredResource getMonitoredResource(String projectId) {
128135 }
129136
130137 List <LoggingEnhancer > getLoggingEnhancers () {
131- List <LoggingEnhancer > loggingEnhancers = new ArrayList <>();
132- if (enhancerClassNames != null ) {
133- for (String enhancerClassName : enhancerClassNames ) {
138+ return getEnhancers (enhancerClassNames );
139+ }
140+
141+ List <LoggingEventEnhancer > getLoggingEventEnhancers () {
142+ return getEnhancers (loggingEventEnhancerClassNames );
143+ }
144+
145+ <T > List <T > getEnhancers (Set <String > classNames ) {
146+ List <T > loggingEnhancers = new ArrayList <>();
147+ if (classNames != null ) {
148+ for (String enhancerClassName : classNames ) {
134149 if (enhancerClassName != null ) {
135- LoggingEnhancer enhancer = getEnhancer (enhancerClassName );
150+ T enhancer = getEnhancer (enhancerClassName );
136151 if (enhancer != null ) {
137152 loggingEnhancers .add (enhancer );
138153 }
@@ -142,10 +157,10 @@ List<LoggingEnhancer> getLoggingEnhancers() {
142157 return loggingEnhancers ;
143158 }
144159
145- private LoggingEnhancer getEnhancer (String enhancerClassName ) {
160+ private < T > T getEnhancer (String enhancerClassName ) {
146161 try {
147- Class <? extends LoggingEnhancer > clz =
148- (Class <? extends LoggingEnhancer >)
162+ Class <T > clz =
163+ (Class <T >)
149164 Loader .loadClass (enhancerClassName .trim ());
150165 return clz .newInstance ();
151166 } catch (Exception ex ) {
@@ -170,6 +185,9 @@ public synchronized void start() {
170185 List <LoggingEnhancer > resourceEnhancers = MonitoredResourceUtil .getResourceEnhancers ();
171186 loggingEnhancers .addAll (resourceEnhancers );
172187 loggingEnhancers .addAll (getLoggingEnhancers ());
188+ loggingEventEnhancers = new ArrayList <>();
189+ loggingEventEnhancers .addAll (getLoggingEventEnhancers ());
190+
173191 super .start ();
174192 }
175193
@@ -227,6 +245,12 @@ private LogEntry logEntryFor(ILoggingEvent e) {
227245 }
228246 }
229247
248+ if (loggingEventEnhancers != null ) {
249+ for (LoggingEventEnhancer enhancer : loggingEventEnhancers ) {
250+ enhancer .enhanceLogEntry (builder , e );
251+ }
252+ }
253+
230254 return builder .build ();
231255 }
232256
0 commit comments