From 21f8a3d0d6baaf5b20901a8ac6073a4f1f860620 Mon Sep 17 00:00:00 2001 From: Nick Shanin Date: Wed, 7 Oct 2026 13:30:06 +0000 Subject: [PATCH 1/3] SOLR-5505: LoggingInfoStream: include the core name in messages --- .../apache/solr/update/LoggingInfoStream.java | 21 +++++++++++++++++-- .../apache/solr/update/SolrIndexConfig.java | 6 +++++- .../solr/core/TestInfoStreamLogging.java | 12 +++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/update/LoggingInfoStream.java b/solr/core/src/java/org/apache/solr/update/LoggingInfoStream.java index 69bb4c12cb1a..6197833f928b 100644 --- a/solr/core/src/java/org/apache/solr/update/LoggingInfoStream.java +++ b/solr/core/src/java/org/apache/solr/update/LoggingInfoStream.java @@ -26,10 +26,27 @@ public class LoggingInfoStream extends InfoStream { private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private final String coreName; + + public LoggingInfoStream() { + this(null); + } + + /** + * @param coreName if not null, the name of the core is added to every message + */ + public LoggingInfoStream(String coreName) { + this.coreName = coreName; + } + @Override public void message(String component, String message) { - if (log.isInfoEnabled()) { - log.info("[{}][{}]: {}", component, Thread.currentThread().getName(), message); + if (coreName == null) { + if (log.isInfoEnabled()) { + log.info("[{}][{}]: {}", component, Thread.currentThread().getName(), message); + } + } else if (log.isInfoEnabled()) { + log.info("[{}][{}][{}]: {}", coreName, component, Thread.currentThread().getName(), message); } } diff --git a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java index 70330b89c71d..d983a8e566a8 100644 --- a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java +++ b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java @@ -258,7 +258,11 @@ public IndexWriterConfig toIndexWriterConfig(SolrCore core) throws IOException { iwc.setMergePolicy(mergePolicy); MergeScheduler mergeScheduler = buildMergeScheduler(core.getResourceLoader()); iwc.setMergeScheduler(mergeScheduler); - iwc.setInfoStream(infoStream); + // one config is shared by reloads and may not know its core, so tag the stream per core here + iwc.setInfoStream( + infoStream instanceof LoggingInfoStream + ? new LoggingInfoStream(core.getName()) + : infoStream); if (mergePolicy instanceof SortingMergePolicy) { Sort indexSort = ((SortingMergePolicy) mergePolicy).getSort(); diff --git a/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java b/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java index 3e031e1847f8..9c76fbe29ee0 100644 --- a/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java +++ b/solr/core/src/test/org/apache/solr/core/TestInfoStreamLogging.java @@ -16,9 +16,12 @@ */ package org.apache.solr.core; +import static org.hamcrest.Matchers.containsString; + import org.apache.lucene.index.IndexWriterConfig; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.update.LoggingInfoStream; +import org.apache.solr.util.LogListener; import org.junit.BeforeClass; public class TestInfoStreamLogging extends SolrTestCaseJ4 { @@ -33,4 +36,13 @@ public void testIndexConfig() throws Exception { assertTrue(iwc.getInfoStream() instanceof LoggingInfoStream); } + + public void testMessagesNameTheCore() throws Exception { + IndexWriterConfig iwc = solrConfig.indexConfig.toIndexWriterConfig(h.getCore()); + + try (LogListener listener = LogListener.info(LoggingInfoStream.class)) { + iwc.getInfoStream().message("IW", "hello from the stream"); + assertThat(listener.pollMessage(), containsString("[" + h.getCore().getName() + "][IW]")); + } + } } From 44c444aa5cd38618424c504fff307ead5cf466cf Mon Sep 17 00:00:00 2001 From: Nick Shanin Date: Wed, 7 Oct 2026 13:30:06 +0000 Subject: [PATCH 2/3] SOLR-5505: add changelog fragment --- changelog/unreleased/SOLR-5505-infostream-core-name.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 changelog/unreleased/SOLR-5505-infostream-core-name.yml diff --git a/changelog/unreleased/SOLR-5505-infostream-core-name.yml b/changelog/unreleased/SOLR-5505-infostream-core-name.yml new file mode 100644 index 000000000000..fda9f3825711 --- /dev/null +++ b/changelog/unreleased/SOLR-5505-infostream-core-name.yml @@ -0,0 +1,8 @@ +title: "LoggingInfoStream (IndexWriter infoStream logging) now includes the core name in every message so multi-core logs can be told apart" +type: changed +authors: + - name: Nick Shanin + nick: nick-boss-tech +links: + - name: SOLR-5505 + url: https://issues.apache.org/jira/browse/SOLR-5505 From d382d9a21e26a527d78d8efda4f6b6be2f91790c Mon Sep 17 00:00:00 2001 From: Nick Shanin Date: Thu, 15 Oct 2026 17:37:17 +0000 Subject: [PATCH 3/3] SOLR-5505: remove the nick line from the changelog fragment --- changelog/unreleased/SOLR-5505-infostream-core-name.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/changelog/unreleased/SOLR-5505-infostream-core-name.yml b/changelog/unreleased/SOLR-5505-infostream-core-name.yml index fda9f3825711..4d4ed26a7b58 100644 --- a/changelog/unreleased/SOLR-5505-infostream-core-name.yml +++ b/changelog/unreleased/SOLR-5505-infostream-core-name.yml @@ -2,7 +2,6 @@ title: "LoggingInfoStream (IndexWriter infoStream logging) now includes the core type: changed authors: - name: Nick Shanin - nick: nick-boss-tech links: - name: SOLR-5505 url: https://issues.apache.org/jira/browse/SOLR-5505