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 2024/05/15 04:58:37 UTC

(logging-log4cxx) 01/01: Warn about each instance of a mis-configured appender

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

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

commit 4bd33818e3e39ebe392309261d6521bd6ec5ee14
Author: Stephen Webb <sw...@gmail.com>
AuthorDate: Wed May 15 14:58:08 2024 +1000

    Warn about each instance of a mis-configured appender
---
 src/main/cpp/appenderskeleton.cpp                  | 31 ++++++++++++++++
 src/main/cpp/writerappender.cpp                    | 42 +++++-----------------
 .../log4cxx/private/appenderskeleton_priv.h        |  6 ++++
 .../include/log4cxx/private/writerappender_priv.h  |  3 ++
 4 files changed, 49 insertions(+), 33 deletions(-)

diff --git a/src/main/cpp/appenderskeleton.cpp b/src/main/cpp/appenderskeleton.cpp
index 878a89dc..3a5e7495 100644
--- a/src/main/cpp/appenderskeleton.cpp
+++ b/src/main/cpp/appenderskeleton.cpp
@@ -131,6 +131,37 @@ void AppenderSkeleton::doAppendImpl(const spi::LoggingEventPtr& event, Pool& poo
 	append(event, pool1);
 }
 
+bool AppenderSkeleton::AppenderSkeletonPrivate::checkNotClosed()
+{
+	if (this->closed)
+	{
+		if (!this->warnedClosed)
+		{
+			LogLog::warn(LOG4CXX_STR("Not allowed to write to a closed appender."));
+			this->warnedClosed = true;
+		}
+		return false;
+	}
+	return true;
+}
+
+bool AppenderSkeleton::AppenderSkeletonPrivate::checkLayout()
+{
+	if (!this->layout)
+	{
+		if (!this->warnedNoLayout)
+		{
+			this->errorHandler->error
+				( LogString(LOG4CXX_STR("No layout set for the appender named ["))
+				+ this->name + LOG4CXX_STR("].")
+				);
+			this->warnedNoLayout = true;
+		}
+		return false;
+	}
+	return true;
+}
+
 void AppenderSkeleton::setErrorHandler(const spi::ErrorHandlerPtr errorHandler1)
 {
 	std::lock_guard<std::recursive_mutex> lock(m_priv->mutex);
diff --git a/src/main/cpp/writerappender.cpp b/src/main/cpp/writerappender.cpp
index 5751f255..b1c5a689 100644
--- a/src/main/cpp/writerappender.cpp
+++ b/src/main/cpp/writerappender.cpp
@@ -107,46 +107,22 @@ void WriterAppender::append(const spi::LoggingEventPtr& event, Pool& pool1)
    value <code>false</code> is returned. */
 bool WriterAppender::checkEntryConditions() const
 {
-	static bool warnedClosed = false;
-	static bool warnedNoWriter = false;
-	static bool warnedNoLayout = false;
-
-	if (_priv->closed)
-	{
-		if (!warnedClosed)
-		{
-			LogLog::warn(LOG4CXX_STR("Not allowed to write to a closed appender."));
-			warnedClosed = true;
-		}
-
-		return false;
-	}
+	return _priv->checkWriter() && _priv->checkLayout() && _priv->checkNotClosed();
+}
 
-	if (_priv->writer == 0)
+bool WriterAppender::WriterAppenderPriv::checkWriter()
+{
+	if (this->writer == 0)
 	{
-		if (!warnedNoWriter)
+		if (!this->warnedNoWriter)
 		{
-			_priv->errorHandler->error(
+			this->errorHandler->error(
 				LogString(LOG4CXX_STR("No output stream or file set for the appender named [")) +
-				_priv->name + LOG4CXX_STR("]."));
-			warnedNoWriter = true;
-		}
-
-		return false;
-	}
-
-	if (_priv->layout == 0)
-	{
-		if (!warnedNoLayout)
-		{
-			_priv->errorHandler->error(
-				LogString(LOG4CXX_STR("No layout set for the appender named [")) +
-				_priv->name + LOG4CXX_STR("]."));
-			warnedNoLayout = true;
+				this->name + LOG4CXX_STR("]."));
+			this->warnedNoWriter = true;
 		}
 		return false;
 	}
-
 	return true;
 }
 
diff --git a/src/main/include/log4cxx/private/appenderskeleton_priv.h b/src/main/include/log4cxx/private/appenderskeleton_priv.h
index b9660cf3..cba7bec4 100644
--- a/src/main/include/log4cxx/private/appenderskeleton_priv.h
+++ b/src/main/include/log4cxx/private/appenderskeleton_priv.h
@@ -70,6 +70,12 @@ struct AppenderSkeleton::AppenderSkeletonPrivate
 
 	LOG4CXX_NS::helpers::Pool pool;
 	mutable std::recursive_mutex mutex;
+
+	bool warnedClosed = false;
+	bool checkNotClosed();
+
+	bool warnedNoLayout = false;
+	bool checkLayout();
 };
 
 }
diff --git a/src/main/include/log4cxx/private/writerappender_priv.h b/src/main/include/log4cxx/private/writerappender_priv.h
index 752c1c3c..30f52eea 100644
--- a/src/main/include/log4cxx/private/writerappender_priv.h
+++ b/src/main/include/log4cxx/private/writerappender_priv.h
@@ -101,6 +101,9 @@ struct WriterAppender::WriterAppenderPriv : public AppenderSkeleton::AppenderSke
 #if LOG4CXX_EVENTS_AT_EXIT
 	helpers::AtExitRegistry::Raii atExitRegistryRaii;
 #endif
+
+	bool warnedNoWriter = false;
+	bool checkWriter();
 };
 
 }