You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by sw...@apache.org on 2025/09/01 12:02:11 UTC

(logging-log4cxx) 01/01: Attempt default configuration at most once on application startup

This is an automated email from the ASF dual-hosted git repository.

swebb2066 pushed a commit to branch try_default_configurator_once
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git

commit 33e7d0523477f6f400e15309fa584446111f18db
Author: Stephen Webb <sw...@gmail.com>
AuthorDate: Mon Sep 1 22:01:05 2025 +1000

    Attempt default configuration at most once on application startup
---
 src/main/cpp/hierarchy.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/cpp/hierarchy.cpp b/src/main/cpp/hierarchy.cpp
index bbd8907a..cb42ffea 100644
--- a/src/main/cpp/hierarchy.cpp
+++ b/src/main/cpp/hierarchy.cpp
@@ -64,6 +64,8 @@ struct Hierarchy::HierarchyPrivate
 	std::vector<AppenderPtr> allAppenders;
 
 	mutable std::mutex listenerMutex;
+
+	const char* alreadyTriedMethod{ NULL };
 };
 
 IMPLEMENT_LOG4CXX_OBJECT(Hierarchy)
@@ -302,10 +304,10 @@ bool Hierarchy::isDisabled(int level) const
 void Hierarchy::ensureIsConfigured(std::function<void()> configurator)
 {
 	std::lock_guard<std::mutex> lock(m_priv->configuredMutex);
-	if (!m_priv->configured)
+	if (!m_priv->configured && m_priv->alreadyTriedMethod != configurator.target_type().name())
 	{
 		configurator();
-		m_priv->configured = true;
+		m_priv->alreadyTriedMethod = configurator.target_type().name();
 	}
 }