4
4
import com .genexus .diagnostics .core .ILogger ;
5
5
import org .apache .logging .log4j .Level ;
6
6
import org .apache .logging .log4j .LogManager ;
7
- import org .apache .logging .log4j .MarkerManager ;
8
7
import org .apache .logging .log4j .ThreadContext ;
9
8
import org .apache .logging .log4j .core .Appender ;
10
9
import org .apache .logging .log4j .core .LoggerContext ;
21
20
import java .util .Map ;
22
21
23
22
public class Log4J2Logger implements ILogger {
24
- private org .apache .logging .log4j .Logger log ;
23
+ private static final String STACKTRACE_KEY = "stackTrace" ;
24
+ private static final String MESSAGE_KEY = "message" ;
25
+ private static final String DATA_KEY = "data" ;
25
26
private static final boolean IS_JSON_FORMAT = isJsonLogFormat ();
26
27
28
+ private final org .apache .logging .log4j .Logger log ;
29
+
27
30
public Log4J2Logger (final Class <?> clazz ) {
28
31
log = org .apache .logging .log4j .LogManager .getLogger (clazz );
29
32
}
@@ -166,7 +169,7 @@ public void warn(String msg) {
166
169
public void trace (String msg ) {
167
170
log .trace (msg );
168
171
}
169
-
172
+
170
173
public void trace (Throwable ex , String [] list ) {
171
174
if (log .isTraceEnabled ()) {
172
175
StringBuilder msg = new StringBuilder ();
@@ -209,57 +212,56 @@ public boolean isErrorEnabled() {
209
212
return log .isErrorEnabled ();
210
213
}
211
214
215
+ @ Override
212
216
public boolean isFatalEnabled () {
213
217
return log .isFatalEnabled ();
214
218
}
215
219
220
+ @ Override
216
221
public boolean isWarnEnabled () {
217
222
return log .isWarnEnabled ();
218
223
}
219
224
225
+ @ Override
220
226
public boolean isInfoEnabled () {
221
227
return log .isInfoEnabled ();
222
228
}
223
229
230
+ @ Override
224
231
public boolean isTraceEnabled () {
225
232
return log .isTraceEnabled ();
226
233
}
227
234
235
+ @ Override
228
236
public boolean isEnabled (int logLevel ) {
229
237
return log .isEnabled (getLogLevel (logLevel ));
230
238
}
231
239
232
- public boolean isEnabled (int logLevel , String marker ) {
233
- return log .isEnabled (getLogLevel (logLevel ), MarkerManager .getMarker (marker ));
234
- }
235
-
240
+ @ Override
236
241
public void setContext (String key , Object value ) {
237
242
// Add entry to the MDC (only works for JSON log format)
238
243
ThreadContext .put (key , fromObjectToString (value ));
239
244
}
240
245
246
+ @ Override
241
247
public void write (String message , int logLevel , Object data , boolean stackTrace ) {
242
248
if (isEnabled (logLevel )) {
243
249
if (IS_JSON_FORMAT )
244
250
writeJsonFormat (message , logLevel , data , stackTrace );
245
251
else
246
252
writeTextFormat (message , logLevel , data , stackTrace );
247
- }
253
+ }
248
254
}
249
255
250
- private static final String STACKTRACE_KEY = "stackTrace" ;
251
- private static final String MESSAGE_KEY = "message" ;
252
-
253
256
private void writeTextFormat (String message , int logLevel , Object data , boolean stackTrace ) {
254
- String dataKey = "data" ;
255
257
Map <String , Object > mapMessage = new LinkedHashMap <>();
256
258
257
259
if (data == null || (data instanceof String && "null" .equals (data .toString ()))) {
258
- mapMessage .put (dataKey , JSONObject .NULL );
260
+ mapMessage .put (DATA_KEY , JSONObject .NULL );
259
261
} else if (data instanceof String && isJson ((String ) data )) { // JSON Strings
260
- mapMessage .put (dataKey , jsonStringToMap ((String )data ));
262
+ mapMessage .put (DATA_KEY , jsonStringToMap ((String ) data ));
261
263
} else {
262
- mapMessage .put (dataKey , data );
264
+ mapMessage .put (DATA_KEY , data );
263
265
}
264
266
265
267
if (stackTrace ) {
@@ -272,15 +274,14 @@ private void writeTextFormat(String message, int logLevel, Object data, boolean
272
274
}
273
275
274
276
private void writeJsonFormat (String message , int logLevel , Object data , boolean stackTrace ) {
275
- String dataKey = "data" ;
276
277
MapMessage <?, ?> mapMessage = new MapMessage <>().with (MESSAGE_KEY , message );
277
278
278
279
if (data == null || (data instanceof String && "null" .equals (data .toString ()))) {
279
- mapMessage .with (dataKey , (Object ) null );
280
+ mapMessage .with (DATA_KEY , (Object ) null );
280
281
} else if (data instanceof String && isJson ((String ) data )) { // JSON Strings
281
- mapMessage .with (dataKey , jsonStringToMap ((String )data ));
282
+ mapMessage .with (DATA_KEY , jsonStringToMap ((String ) data ));
282
283
} else {
283
- mapMessage .with (dataKey , data );
284
+ mapMessage .with (DATA_KEY , data );
284
285
}
285
286
286
287
if (stackTrace ) {
@@ -293,13 +294,20 @@ private void writeJsonFormat(String message, int logLevel, Object data, boolean
293
294
private Level getLogLevel (int logLevel ) {
294
295
LogLevel level = LogLevel .fromInt (logLevel );
295
296
switch (level ) {
296
- case OFF : return Level .OFF ;
297
- case TRACE : return Level .TRACE ;
298
- case INFO : return Level .INFO ;
299
- case WARN : return Level .WARN ;
300
- case ERROR : return Level .ERROR ;
301
- case FATAL : return Level .FATAL ;
302
- default : return Level .DEBUG ;
297
+ case OFF :
298
+ return Level .OFF ;
299
+ case TRACE :
300
+ return Level .TRACE ;
301
+ case INFO :
302
+ return Level .INFO ;
303
+ case WARN :
304
+ return Level .WARN ;
305
+ case ERROR :
306
+ return Level .ERROR ;
307
+ case FATAL :
308
+ return Level .FATAL ;
309
+ default :
310
+ return Level .DEBUG ;
303
311
}
304
312
}
305
313
@@ -320,6 +328,7 @@ private static String fromObjectToString(Object value) {
320
328
res = new JSONArray ((List <?>) value ).toString ();
321
329
} else {
322
330
// Any other object → serialize as JSON
331
+ // You never enter here from GX
323
332
res = JSONObject .quote (value .toString ());
324
333
}
325
334
return res ;
0 commit comments