From d84f2eea587dd0ddf64fb4a597965f3eb7290f79 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Wed, 22 Feb 2023 09:07:29 +0100 Subject: [PATCH 1/2] FIX: do not format log messages, when no parameter was specified --- .../java/io/ebean/test/CaptureLogger.java | 6 +++- .../java/io/ebean/test/TestCaptureLogger.java | 36 +++++++++++++++++++ .../src/test/resources/logback-test.xml | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java diff --git a/ebean-test/src/main/java/io/ebean/test/CaptureLogger.java b/ebean-test/src/main/java/io/ebean/test/CaptureLogger.java index b02413f91..b14f8d5b9 100644 --- a/ebean-test/src/main/java/io/ebean/test/CaptureLogger.java +++ b/ebean-test/src/main/java/io/ebean/test/CaptureLogger.java @@ -27,7 +27,11 @@ final class CaptureLogger implements SpiLogger { @Override public void debug(String msg, Object... args) { if (active) { - messages.add(MessageFormat.format(msg, args)); + if (args != null && args.length > 0) { + messages.add(MessageFormat.format(msg, args)); + } else { + messages.add(msg); + } } wrapped.debug(msg, args); } diff --git a/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java b/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java new file mode 100644 index 000000000..9d3e3f915 --- /dev/null +++ b/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java @@ -0,0 +1,36 @@ +package io.ebean.test; + +import io.ebeaninternal.api.SpiLogger; +import io.ebeaninternal.api.SpiLoggerFactory; +import io.ebeaninternal.server.logger.DLoggerFactory; +import org.junit.jupiter.api.Test; +import org.junit.platform.commons.logging.LoggerFactory; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TestCaptureLogger { + + @Test + void testDefaultLogger() { + SpiLogger logger = new DLoggerFactory().create("io.ebean.test.loggerTest"); + doSomeLogs(logger); + + CaptureLogger captureLogger = new CaptureLogger(logger); + captureLogger.start(); + doSomeLogs(captureLogger); + assertThat(captureLogger.stop()).containsExactly( + "test {0}", "test {}", "test {bla}", "test {bla} {0}", "test {bla} {0}", "test {bla} 1", "test '{bla}' {0}"); + } + + void doSomeLogs(SpiLogger logger) { + logger.debug("test {0}"); // Returns "test {0}" + logger.debug("test {}"); // Returns "test {}" + logger.debug("test {bla}"); // Returns "test {bla}" + logger.debug("test {bla} {0}"); // Returns "test {bla} {0}" + logger.debug("test {bla} {0}", new Object[]{}); // Returns "test {bla} {0}" + //logger.debug("Test {bla} {0}", 1); // fails: "can't parse argument number: bla" + logger.debug("test '{bla}' {0}", 1); // Returns "test {bla} 1" + logger.debug("test '{bla}' {0}"); // Returns "test '{bla}' {0}" + } + +} diff --git a/ebean-test/src/test/resources/logback-test.xml b/ebean-test/src/test/resources/logback-test.xml index 529a103d0..36c235e0c 100644 --- a/ebean-test/src/test/resources/logback-test.xml +++ b/ebean-test/src/test/resources/logback-test.xml @@ -78,6 +78,7 @@ + From 56360f0fb38513a23c081135dd50970535f1c916 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Wed, 22 Feb 2023 09:19:58 +0100 Subject: [PATCH 2/2] use captureLogger --- .../src/test/java/io/ebean/test/TestCaptureLogger.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java b/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java index 9d3e3f915..8560f0924 100644 --- a/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java +++ b/ebean-test/src/test/java/io/ebean/test/TestCaptureLogger.java @@ -1,10 +1,7 @@ package io.ebean.test; import io.ebeaninternal.api.SpiLogger; -import io.ebeaninternal.api.SpiLoggerFactory; -import io.ebeaninternal.server.logger.DLoggerFactory; import org.junit.jupiter.api.Test; -import org.junit.platform.commons.logging.LoggerFactory; import static org.assertj.core.api.Assertions.assertThat; @@ -12,7 +9,7 @@ public class TestCaptureLogger { @Test void testDefaultLogger() { - SpiLogger logger = new DLoggerFactory().create("io.ebean.test.loggerTest"); + SpiLogger logger = new CapturingLoggerFactory().create("io.ebean.test.loggerTest"); doSomeLogs(logger); CaptureLogger captureLogger = new CaptureLogger(logger);