diff --git a/muted-tests.yml b/muted-tests.yml index 6e7df82f43b16..ffbe46f9c9e86 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -369,9 +369,6 @@ tests: - class: org.elasticsearch.xpack.sql.qa.mixed_node.SqlCompatIT method: testNullsOrderWithMissingOrderSupportQueryingNewNode issue: https://github.com/elastic/elasticsearch/issues/132249 -- class: org.elasticsearch.common.logging.JULBridgeTests - method: testThrowable - issue: https://github.com/elastic/elasticsearch/issues/132280 - class: org.elasticsearch.xpack.ml.integration.AutodetectMemoryLimitIT method: testManyDistinctOverFields issue: https://github.com/elastic/elasticsearch/issues/132308 diff --git a/server/src/main/java/org/elasticsearch/common/logging/JULBridge.java b/server/src/main/java/org/elasticsearch/common/logging/JULBridge.java index f16fa15394084..14708a75e5086 100644 --- a/server/src/main/java/org/elasticsearch/common/logging/JULBridge.java +++ b/server/src/main/java/org/elasticsearch/common/logging/JULBridge.java @@ -58,9 +58,18 @@ public static void install() { private JULBridge() {} + // package private for tests. Prefix log4j logger names with "jul" to distinguish from other loggers + static String loggerName(String julLoggerName) { + String loggerName = "jul"; + if (julLoggerName.isEmpty() == false) { + loggerName += "." + julLoggerName; + } + return loggerName; + } + @Override public void publish(LogRecord record) { - Logger logger = LogManager.getLogger(record.getLoggerName()); + Logger logger = LogManager.getLogger(loggerName(record.getLoggerName())); Level level = translateJulLevel(record.getLevel()); Throwable thrown = record.getThrown(); diff --git a/server/src/test/java/org/elasticsearch/common/logging/JULBridgeTests.java b/server/src/test/java/org/elasticsearch/common/logging/JULBridgeTests.java index 1d45a056ce232..00c3baf93a9f0 100644 --- a/server/src/test/java/org/elasticsearch/common/logging/JULBridgeTests.java +++ b/server/src/test/java/org/elasticsearch/common/logging/JULBridgeTests.java @@ -59,11 +59,12 @@ public static void restoreLoggerState() { } } - private void assertLogged(Runnable loggingCode, LoggingExpectation... expectations) { - Logger testLogger = LogManager.getLogger(""); + private void assertLogged(String julLoggerName, Runnable loggingCode, LoggingExpectation... expectations) { + String loggerName = JULBridge.loggerName(julLoggerName); + Logger testLogger = LogManager.getLogger(loggerName); Level savedLevel = testLogger.getLevel(); - try (var mockLog = MockLog.capture("")) { + try (var mockLog = MockLog.capture(loggerName)) { Loggers.setLevel(testLogger, Level.ALL); for (var expectation : expectations) { mockLog.addExpectation(expectation); @@ -76,7 +77,7 @@ private void assertLogged(Runnable loggingCode, LoggingExpectation... expectatio } private void assertMessage(String msg, java.util.logging.Level julLevel, Level expectedLevel) { - assertLogged(() -> logger.log(julLevel, msg), new SeenEventExpectation(msg, "", expectedLevel, msg)); + assertLogged("", () -> logger.log(julLevel, msg), new SeenEventExpectation(msg, "jul", expectedLevel, msg)); } private static java.util.logging.Level julLevel(int value) { @@ -113,41 +114,46 @@ public void testCustomLevels() { public void testThrowable() { JULBridge.install(); java.util.logging.Logger logger = java.util.logging.Logger.getLogger(""); - assertLogged(() -> logger.log(java.util.logging.Level.SEVERE, "error msg", new Exception("some error")), new LoggingExpectation() { - boolean matched = false; - - @Override - public void match(LogEvent event) { - Throwable thrown = event.getThrown(); - matched = event.getLoggerName().equals("") - && event.getMessage().getFormattedMessage().equals("error msg") - && thrown != null - && thrown.getMessage().equals("some error"); - } - - @Override - public void assertMatched() { - assertThat("expected to see error message but did not", matched, equalTo(true)); + assertLogged( + "", + () -> logger.log(java.util.logging.Level.SEVERE, "error msg", new Exception("some error")), + new LoggingExpectation() { + boolean matched = false; + + @Override + public void match(LogEvent event) { + Throwable thrown = event.getThrown(); + matched = event.getLoggerName().equals("jul") + && event.getMessage().getFormattedMessage().equals("error msg") + && thrown != null + && thrown.getMessage().equals("some error"); + } + + @Override + public void assertMatched() { + assertThat("expected to see error message but did not", matched, equalTo(true)); + } } - }); + ); } public void testChildLogger() { JULBridge.install(); java.util.logging.Logger childLogger = java.util.logging.Logger.getLogger("foo"); - assertLogged(() -> childLogger.info("child msg"), new SeenEventExpectation("child msg", "foo", Level.INFO, "child msg")); + assertLogged("foo", () -> childLogger.info("child msg"), new SeenEventExpectation("child msg", "jul.foo", Level.INFO, "child msg")); } public void testNullMessage() { JULBridge.install(); - assertLogged(() -> logger.info((String) null), new SeenEventExpectation("null msg", "", Level.INFO, "")); + assertLogged("", () -> logger.info((String) null), new SeenEventExpectation("null msg", "jul", Level.INFO, "")); } public void testFormattedMessage() { JULBridge.install(); assertLogged( + "", () -> logger.log(java.util.logging.Level.INFO, "{0}", "a var"), - new SeenEventExpectation("formatted msg", "", Level.INFO, "a var") + new SeenEventExpectation("formatted msg", "jul", Level.INFO, "a var") ); } }