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 <[email protected]>
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();
        }
 }
 

Reply via email to