Deal with logging parameters
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Jul 2022 14:22:39 +0000 (16:22 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Jul 2022 14:22:39 +0000 (16:22 +0200)
org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java
org.argeo.init/src/org/argeo/init/logging/ThinLogging.java

index 1bfab8e92cd9f8d1573ea084309aa6f8bf79a12d..3ff5265e5e41509ef435130a19272df62ef877be 100644 (file)
@@ -91,8 +91,13 @@ class ThinJavaUtilLogging {
                @Override
                public void publish(LogRecord record) {
                        java.lang.System.Logger systemLogger = ThinLoggerFinder.getLogger(record.getLoggerName());
-                       systemLogger.log(ThinJavaUtilLogging.fromJulLevel(record.getLevel()), record.getMessage(),
-                                       record.getThrown());
+                       if (record.getParameters() != null && record.getParameters().length > 0) {
+                               systemLogger.log(ThinJavaUtilLogging.fromJulLevel(record.getLevel()), record.getMessage(),
+                                               record.getParameters());
+                       } else {
+                               systemLogger.log(ThinJavaUtilLogging.fromJulLevel(record.getLevel()), record.getMessage(),
+                                               record.getThrown());
+                       }
                }
 
                @Override
index 05fdfef1af265c219268aeab389df6d9b4203715..16e792776566a51502a5aa0924f369cecb8adab3 100644 (file)
@@ -294,8 +294,19 @@ class ThinLogging implements Consumer<Map<String, Object>> {
 
                        // NOTE: this is the method called when logging a plain message without
                        // exception, so it should be considered as a format only when args are not null
-                       if (format.contains("{}"))// workaround for weird Jetty formatting
-                               params = null;
+//                     if (format.contains("{}"))// workaround for weird Jetty formatting
+//                             params = null;
+                       // TODO move this to slf4j wrapper?
+                       if (format.contains("{}")) {
+                               StringBuilder sb = new StringBuilder();
+                               String[] segments = format.split("\\{\\}");
+                               for (int i = 0; i < segments.length; i++) {
+                                       sb.append(segments[i]);
+                                       if (i != (segments.length - 1))
+                                               sb.append("{" + i + "}");
+                               }
+                               format = sb.toString();
+                       }
                        String msg = params == null ? format : MessageFormat.format(format, params);
                        publisher.log(this, level, bundle, msg, now, thread, (Throwable) null, findCallLocation(level, thread));
                }