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