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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9e310718 Simplify the Appender interface in a future ABI version (#642)
9e310718 is described below

commit 9e310718b3b62b975b8d7da00e0b328e3d2797e3
Author: Stephen Webb <[email protected]>
AuthorDate: Mon May 4 11:51:16 2026 +1000

    Simplify the Appender interface in a future ABI version (#642)
---
 src/examples/cpp/custom-appender.cpp               |  2 +-
 src/main/cpp/CMakeLists.txt                        |  1 +
 .../vectorappender.cpp => main/cpp/appender.cpp}   | 31 ++++++---------
 src/main/cpp/appenderattachableimpl.cpp            | 10 ++++-
 src/main/cpp/appenderskeleton.cpp                  |  8 ++--
 src/main/cpp/asyncappender.cpp                     | 22 ++++++-----
 src/main/cpp/dbappender.cpp                        |  5 ++-
 src/main/cpp/fallbackerrorhandler.cpp              |  3 +-
 src/main/cpp/loader.cpp                            |  1 -
 src/main/cpp/logger.cpp                            | 46 ++++++++++------------
 src/main/cpp/multiprocessrollingfileappender.cpp   | 37 +++++++++++------
 src/main/cpp/nteventlogappender.cpp                |  7 ++--
 src/main/cpp/odbcappender.cpp                      |  4 +-
 src/main/cpp/outputdebugstringappender.cpp         |  5 ++-
 src/main/cpp/rollingfileappender.cpp               | 26 ++++++++----
 src/main/cpp/smtpappender.cpp                      |  3 +-
 src/main/cpp/syslogappender.cpp                    |  5 ++-
 src/main/cpp/telnetappender.cpp                    |  7 ++--
 src/main/cpp/writerappender.cpp                    | 13 +++---
 src/main/cpp/xmlsocketappender.cpp                 |  3 +-
 src/main/include/log4cxx/appender.h                | 19 ++++++++-
 src/main/include/log4cxx/appenderskeleton.h        |  7 ++--
 src/main/include/log4cxx/asyncappender.h           |  5 +--
 src/main/include/log4cxx/db/dbappender.h           |  2 +-
 src/main/include/log4cxx/db/odbcappender.h         |  2 +-
 .../log4cxx/helpers/appenderattachableimpl.h       |  8 ++++
 src/main/include/log4cxx/logger.h                  | 11 ++++++
 src/main/include/log4cxx/net/smtpappender.h        |  2 +-
 src/main/include/log4cxx/net/syslogappender.h      |  2 +-
 src/main/include/log4cxx/net/telnetappender.h      |  2 +-
 src/main/include/log4cxx/net/xmlsocketappender.h   |  2 +-
 src/main/include/log4cxx/nt/nteventlogappender.h   |  2 +-
 .../include/log4cxx/nt/outputdebugstringappender.h |  2 +-
 .../rolling/multiprocessrollingfileappender.h      | 10 ++++-
 .../include/log4cxx/rolling/rollingfileappender.h  |  8 +++-
 src/main/include/log4cxx/writerappender.h          |  4 +-
 src/site/doxy/Doxyfile.in                          |  7 +++-
 src/test/cpp/asyncappendertestcase.cpp             | 10 ++---
 src/test/cpp/benchmark/benchmark.cpp               |  2 +-
 src/test/cpp/levelchangetestcase.cpp               |  2 +-
 src/test/cpp/loggertestcase.cpp                    |  2 +-
 src/test/cpp/nt/nteventlogappendertestcase.cpp     |  4 +-
 src/test/cpp/optionhandlertest.cpp                 |  4 +-
 src/test/cpp/rolling/manualrollingtest.cpp         |  2 +-
 src/test/cpp/vectorappender.cpp                    |  2 +-
 src/test/cpp/vectorappender.h                      |  2 +-
 46 files changed, 220 insertions(+), 144 deletions(-)

diff --git a/src/examples/cpp/custom-appender.cpp 
b/src/examples/cpp/custom-appender.cpp
index 598abeca..cd67f1de 100644
--- a/src/examples/cpp/custom-appender.cpp
+++ b/src/examples/cpp/custom-appender.cpp
@@ -40,7 +40,7 @@ public:
                return false;
        }
 
-       void append(const spi::LoggingEventPtr& event, helpers::Pool& p) 
override {
+       void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override {
                // This gets called whenever there is a valid event for our 
appender.
        }
 
diff --git a/src/main/cpp/CMakeLists.txt b/src/main/cpp/CMakeLists.txt
index dcbe526d..5273700f 100644
--- a/src/main/cpp/CMakeLists.txt
+++ b/src/main/cpp/CMakeLists.txt
@@ -84,6 +84,7 @@ target_sources(log4cxx
   PRIVATE
   action.cpp
   andfilter.cpp
+  appender.cpp
   appenderattachableimpl.cpp
   appenderskeleton.cpp
   aprinitializer.cpp
diff --git a/src/test/cpp/vectorappender.cpp b/src/main/cpp/appender.cpp
similarity index 59%
copy from src/test/cpp/vectorappender.cpp
copy to src/main/cpp/appender.cpp
index aa7999a3..1e512204 100644
--- a/src/test/cpp/vectorappender.cpp
+++ b/src/main/cpp/appender.cpp
@@ -14,29 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include <log4cxx/appender.h>
+#include <log4cxx/helpers/pool.h>
 
-#include "vectorappender.h"
-#include <log4cxx/private/appenderskeleton_priv.h>
-#include <thread>
+using namespace LOG4CXX_NS;
 
-using namespace log4cxx;
-using namespace log4cxx::helpers;
+IMPLEMENT_LOG4CXX_OBJECT(Appender)
 
-IMPLEMENT_LOG4CXX_OBJECT(VectorAppender)
-
-void VectorAppender::append(const spi::LoggingEventPtr& event, Pool& /*p*/)
+#if LOG4CXX_ABI_VERSION <= 15
+void Appender::doAppend(const spi::LoggingEventPtr& event)
 {
-       if (0 < this->appendMillisecondDelay)
-               std::this_thread::sleep_for( std::chrono::milliseconds( 
this->appendMillisecondDelay ) );
-       this->vector.push_back(event);
+       helpers::Pool p;
+       doAppend(event, p);
 }
-
-bool VectorAppender::isClosed() const
-{
-       return m_priv->closed;
-}
-
-void VectorAppender::close()
+#else
+void Appender::doAppend(const spi::LoggingEventPtr& event, helpers::Pool&)
 {
-       m_priv->closed = true;
+       doAppend(event);
 }
+#endif
diff --git a/src/main/cpp/appenderattachableimpl.cpp 
b/src/main/cpp/appenderattachableimpl.cpp
index 304b7061..e56ac0af 100644
--- a/src/main/cpp/appenderattachableimpl.cpp
+++ b/src/main/cpp/appenderattachableimpl.cpp
@@ -96,7 +96,7 @@ void AppenderAttachableImpl::addAppender(const AppenderPtr 
newAppender)
                m_priv = std::make_unique<priv_data>(AppenderList{newAppender});
 }
 
-int AppenderAttachableImpl::appendLoopOnAppenders(const spi::LoggingEventPtr& 
event, Pool& p)
+int AppenderAttachableImpl::appendLoopOnAppenders(const spi::LoggingEventPtr& 
event)
 {
        int result = 0;
        if (m_priv)
@@ -104,12 +104,18 @@ int AppenderAttachableImpl::appendLoopOnAppenders(const 
spi::LoggingEventPtr& ev
                auto allAppenders = m_priv->getAppenders();
                for (auto& appender : *allAppenders)
                {
-                       appender->doAppend(event, p);
+                       appender->doAppend(event);
                        ++result;
                }
        }
        return result;
 }
+#if LOG4CXX_ABI_VERSION <= 15
+int AppenderAttachableImpl::appendLoopOnAppenders(const spi::LoggingEventPtr& 
event, helpers::Pool& p)
+{
+       return appendLoopOnAppenders(event);
+}
+#endif
 
 AppenderList AppenderAttachableImpl::getAllAppenders() const
 {
diff --git a/src/main/cpp/appenderskeleton.cpp 
b/src/main/cpp/appenderskeleton.cpp
index 030c7572..a23ec9c0 100644
--- a/src/main/cpp/appenderskeleton.cpp
+++ b/src/main/cpp/appenderskeleton.cpp
@@ -94,14 +94,14 @@ bool AppenderSkeleton::isAsSevereAsThreshold(const 
LevelPtr& level) const
        return ((level == 0) || level->isGreaterOrEqual(m_priv->threshold));
 }
 
-void AppenderSkeleton::doAppend(const spi::LoggingEventPtr& event, Pool& pool1)
+void AppenderSkeleton::doAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        std::lock_guard<std::recursive_mutex> lock(m_priv->mutex);
 
-       doAppendImpl(event, pool1);
+       doAppendImpl( LOG4CXX_APPEND_PARAMETERS );
 }
 
-void AppenderSkeleton::doAppendImpl(const spi::LoggingEventPtr& event, Pool& 
pool)
+void AppenderSkeleton::doAppendImpl( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (m_priv->closed)
        {
@@ -110,7 +110,7 @@ void AppenderSkeleton::doAppendImpl(const 
spi::LoggingEventPtr& event, Pool& poo
        }
        else if (isAsSevereAsThreshold(event->getLevel()) && isAccepted(event))
        {
-               append(event, pool);
+               append( LOG4CXX_APPEND_PARAMETERS );
        }
 }
 
diff --git a/src/main/cpp/asyncappender.cpp b/src/main/cpp/asyncappender.cpp
index 9c6f5470..206ba53a 100644
--- a/src/main/cpp/asyncappender.cpp
+++ b/src/main/cpp/asyncappender.cpp
@@ -104,9 +104,10 @@ class DiscardSummary
                 *
                 * @return the new event.
                 */
-               LoggingEventPtr createEvent(Pool& p);
+               LoggingEventPtr createEvent();
 
 #if LOG4CXX_ABI_VERSION <= 15
+               LoggingEventPtr createEvent(Pool&);
                static
                ::LOG4CXX_NS::spi::LoggingEventPtr 
createEvent(::LOG4CXX_NS::helpers::Pool& p,
                        size_t discardedCount);
@@ -340,16 +341,16 @@ void AsyncAppender::setOption(const LogString& option,
 }
 
 
-void AsyncAppender::doAppend(const spi::LoggingEventPtr& event, Pool& pool1)
+void AsyncAppender::doAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
-       doAppendImpl(event, pool1);
+       doAppendImpl( LOG4CXX_APPEND_PARAMETERS );
 }
 
-void AsyncAppender::append(const spi::LoggingEventPtr& event, Pool& p)
+void AsyncAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (priv->bufferSize <= 0)
        {
-               priv->appenders.appendLoopOnAppenders(event, p);
+               priv->appenders.appendLoopOnAppenders(event);
                return;
        }
 
@@ -585,7 +586,7 @@ void DiscardSummary::add(const LoggingEventPtr& event)
        ++this->count;
 }
 
-LoggingEventPtr DiscardSummary::createEvent(Pool& p)
+LoggingEventPtr DiscardSummary::createEvent()
 {
        LogString msg(LOG4CXX_STR("Discarded "));
        StringHelper::toString(this->count, msg);
@@ -598,8 +599,10 @@ LoggingEventPtr DiscardSummary::createEvent(Pool& p)
                , LocationInfo::getLocationUnavailable()
                );
 }
-
 #if LOG4CXX_ABI_VERSION <= 15
+LoggingEventPtr DiscardSummary::createEvent(Pool&)
+{ return createEvent(); }
+
 ::LOG4CXX_NS::spi::LoggingEventPtr
 DiscardSummary::createEvent(::LOG4CXX_NS::helpers::Pool& p,
        size_t discardedCount)
@@ -628,7 +631,6 @@ void AsyncAppender::AsyncAppenderPriv::dispatch(const 
LogString& appenderName)
 
        while (isActive)
        {
-               Pool p;
                LoggingEventList events;
                events.reserve(this->bufferSize);
                for (int count = 0; count < 2 && this->dispatchedCount == 
this->commitCount; ++count)
@@ -658,7 +660,7 @@ void AsyncAppender::AsyncAppenderPriv::dispatch(const 
LogString& appenderName)
                        producerBlockedCount += this->blockedCount;
                        for (auto& discardItem : this->discardMap)
                        {
-                               
events.push_back(discardItem.second.createEvent(p));
+                               
events.push_back(discardItem.second.createEvent());
                                discardCount += discardItem.second.getCount();
                        }
                        this->discardMap.clear();
@@ -668,7 +670,7 @@ void AsyncAppender::AsyncAppenderPriv::dispatch(const 
LogString& appenderName)
                {
                        try
                        {
-                               this->appenders.appendLoopOnAppenders(item, p);
+                               this->appenders.appendLoopOnAppenders(item);
                        }
                        catch (std::exception& ex)
                        {
diff --git a/src/main/cpp/dbappender.cpp b/src/main/cpp/dbappender.cpp
index 971b7f21..7bf72c52 100644
--- a/src/main/cpp/dbappender.cpp
+++ b/src/main/cpp/dbappender.cpp
@@ -223,7 +223,7 @@ void DBAppender::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS )
     }
 }
 
-void DBAppender::append(const spi::LoggingEventPtr& event, helpers::Pool& p){
+void DBAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS ){
        std::vector<std::string> ls_args;
     std::vector<const char*> args;
     int stat;
@@ -236,9 +236,10 @@ void DBAppender::append(const spi::LoggingEventPtr& event, 
helpers::Pool& p){
         return;
     }
 
+    helpers::Pool tempPool;
     for(auto& converter : _priv->converters){
         LogString str_data;
-        converter->format(event, str_data, p);
+        converter->format(event, str_data, tempPool);
                LOG4CXX_ENCODE_CHAR(new_str_data, str_data);
                ls_args.push_back(new_str_data);
     }
diff --git a/src/main/cpp/fallbackerrorhandler.cpp 
b/src/main/cpp/fallbackerrorhandler.cpp
index 0c027c00..8a1652e8 100644
--- a/src/main/cpp/fallbackerrorhandler.cpp
+++ b/src/main/cpp/fallbackerrorhandler.cpp
@@ -143,8 +143,7 @@ void FallbackErrorHandler::error
        m_priv->errorReported = true;
        if (event)
     {
-        Pool p;
-               backupLocked->doAppend(event, p);
+               backupLocked->doAppend(event);
     }
        m_priv->primary = backupLocked;
 }
diff --git a/src/main/cpp/loader.cpp b/src/main/cpp/loader.cpp
index 0e07767f..f91af56d 100644
--- a/src/main/cpp/loader.cpp
+++ b/src/main/cpp/loader.cpp
@@ -41,7 +41,6 @@ using namespace LOG4CXX_NS::filter;
 IMPLEMENT_LOG4CXX_OBJECT(Object)
 IMPLEMENT_LOG4CXX_OBJECT(OptionHandler)
 IMPLEMENT_LOG4CXX_OBJECT(ErrorHandler)
-IMPLEMENT_LOG4CXX_OBJECT(Appender)
 IMPLEMENT_LOG4CXX_OBJECT(Filter)
 IMPLEMENT_LOG4CXX_OBJECT(AppenderAttachable)
 IMPLEMENT_LOG4CXX_OBJECT(LoggerFactory)
diff --git a/src/main/cpp/logger.cpp b/src/main/cpp/logger.cpp
index f42dbf16..1efcb34f 100644
--- a/src/main/cpp/logger.cpp
+++ b/src/main/cpp/logger.cpp
@@ -141,7 +141,7 @@ void Logger::reconfigure( const AppenderList& newList, bool 
newAdditivity )
        replaceAppenders(newList);
 }
 
-void Logger::callAppenders(const spi::LoggingEventPtr& event, Pool& p) const
+void Logger::callAppenders(const spi::LoggingEventPtr& event) const
 {
        int writes = 0;
 
@@ -149,7 +149,7 @@ void Logger::callAppenders(const spi::LoggingEventPtr& 
event, Pool& p) const
                logger != 0;
                logger = logger->m_priv->parent.get())
        {
-               writes += logger->m_priv->aai.appendLoopOnAppenders(event, p);
+               writes += logger->m_priv->aai.appendLoopOnAppenders(event);
 
                if (!logger->m_priv->additive)
                {
@@ -164,6 +164,12 @@ void Logger::callAppenders(const spi::LoggingEventPtr& 
event, Pool& p) const
                rep->emitNoAppenderWarning(this);
        }
 }
+#if LOG4CXX_ABI_VERSION <= 15
+void Logger::callAppenders(const spi::LoggingEventPtr& event, Pool&) const
+{
+    callAppenders(event);
+}
+#endif
 
 void Logger::closeNestedAppenders()
 {
@@ -178,8 +184,7 @@ void Logger::addEvent(const LevelPtr& level, 
helpers::AsyncBuffer&& messageAppen
        if (!getHierarchy()) // Has removeHierarchy() been called?
                return;
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(messageAppender));
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::addEvent(const LevelPtr& level, std::string&& message, const 
LocationInfo& location) const
@@ -192,8 +197,7 @@ void Logger::addEvent(const LevelPtr& level, std::string&& 
message, const Locati
        LOG4CXX_DECODE_CHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(msg));
 #endif
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::addFatalEvent(std::string&& message, const LocationInfo& 
location) const
@@ -267,8 +271,7 @@ void Logger::forcedLog(const LevelPtr& level, const 
std::string& message,
        LOG4CXX_DECODE_CHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(msg));
 #endif
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::forcedLog(const LevelPtr& level1, const std::string& message) 
const
@@ -281,8 +284,7 @@ void Logger::addEventLS(const LevelPtr& level, LogString&& 
message, const Locati
        if (!getHierarchy()) // Has removeHierarchy() been called?
                return;
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(message));
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::forcedLogLS(const LevelPtr& level1, const LogString& message,
@@ -291,8 +293,7 @@ void Logger::forcedLogLS(const LevelPtr& level1, const 
LogString& message,
        if (!getHierarchy()) // Has removeHierarchy() been called?
                return;
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level1, 
message, location);
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 
@@ -857,8 +858,7 @@ void Logger::addEvent(const LevelPtr& level, std::wstring&& 
message, const Locat
        LOG4CXX_DECODE_WCHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(msg));
 #endif
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::addFatalEvent(std::wstring&& message, const LocationInfo& 
location) const
@@ -902,8 +902,7 @@ void Logger::forcedLog(const LevelPtr& level, const 
std::wstring& message,
        LOG4CXX_DECODE_WCHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(msg));
 #endif
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::forcedLog(const LevelPtr& level1, const std::wstring& message) 
const
@@ -1050,8 +1049,7 @@ void Logger::addEvent(const LevelPtr& level1, 
std::basic_string<UniChar>&& messa
                return;
        LOG4CXX_DECODE_UNICHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level1, 
location, std::move(msg));
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::addFatalEvent(std::basic_string<UniChar>&& message, const 
LocationInfo& location) const
@@ -1091,8 +1089,7 @@ void Logger::forcedLog(const LevelPtr& level1, const 
std::basic_string<UniChar>&
                return;
        LOG4CXX_DECODE_UNICHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level1, 
location, std::move(msg));
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::forcedLog(const LevelPtr& level1, const 
std::basic_string<UniChar>& message) const
@@ -1102,8 +1099,7 @@ void Logger::forcedLog(const LevelPtr& level1, const 
std::basic_string<UniChar>&
        LOG4CXX_DECODE_UNICHAR(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level1, msg,
                        LocationInfo::getLocationUnavailable());
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::getName(std::basic_string<UniChar>& rv) const
@@ -1241,8 +1237,7 @@ void Logger::forcedLog(const LevelPtr& level, const 
CFStringRef& message,
                return;
        LOG4CXX_DECODE_CFSTRING(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, 
location, std::move(msg));
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::forcedLog(const LevelPtr& level, const CFStringRef& message) const
@@ -1252,8 +1247,7 @@ void Logger::forcedLog(const LevelPtr& level, const 
CFStringRef& message) const
        LOG4CXX_DECODE_CFSTRING(msg, message);
        auto event = std::make_shared<LoggingEvent>(m_priv->name, level, msg,
                        LocationInfo::getLocationUnavailable());
-       Pool p;
-       callAppenders(event, p);
+       callAppenders(event);
 }
 
 void Logger::getName(CFStringRef& rv) const
diff --git a/src/main/cpp/multiprocessrollingfileappender.cpp 
b/src/main/cpp/multiprocessrollingfileappender.cpp
index 71f16253..b898a0be 100644
--- a/src/main/cpp/multiprocessrollingfileappender.cpp
+++ b/src/main/cpp/multiprocessrollingfileappender.cpp
@@ -246,18 +246,24 @@ bool 
MultiprocessRollingFileAppender::getCurrentFileSize(size_t* pSize)
 
  * @return true if rollover performed.
  */
-bool MultiprocessRollingFileAppender::rollover(Pool& p)
+bool MultiprocessRollingFileAppender::rollover()
 {
        std::lock_guard<std::recursive_mutex> lock(_priv->mutex);
-       return synchronizedRollover(p);
+       return synchronizedRollover();
+}
+#if LOG4CXX_ABI_VERSION <= 15
+bool MultiprocessRollingFileAppender::rollover(Pool& p)
+{
+       return rollover();
 }
+#endif
 
 /**
  * Coordinate a rollover with other processes
 
  * @return true if this process perfomed the rollover.
  */
-bool MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const 
TriggeringPolicyPtr& trigger)
+bool MultiprocessRollingFileAppender::synchronizedRollover(const 
TriggeringPolicyPtr& trigger)
 {
        bool result = false;
        LogString fileName = getFile();
@@ -267,6 +273,7 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
                reopenFile(fileName);
        else
        {
+               helpers::Pool tempPool;
                MultiprocessRollingFileAppenderPriv::Lock lk(_priv, fileName);
                if (!lk.hasLock())
                        LogLog::warn(LOG4CXX_STR("Failed to lock ") + fileName);
@@ -274,14 +281,14 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
                        reopenFile(fileName);
                else if (trigger && !trigger->isTriggeringEvent(this, 
_priv->_event, fileName, _priv->fileLength))
                        ;
-               else if (auto rollover1 = 
_priv->rollingPolicy->rollover(fileName, getAppend(), p))
+               else if (auto rollover1 = 
_priv->rollingPolicy->rollover(fileName, getAppend(), tempPool))
                {
                        _priv->close();
                        if (rollover1->getActiveFileName() == fileName)
                        {
                                bool success = true; // A synchronous action is 
not required
                                if (auto pAction = rollover1->getSynchronous())
-                                       success = pAction->execute(p);
+                                       success = pAction->execute(tempPool);
 
                                bool appendToExisting = true;
                                if (success)
@@ -300,7 +307,7 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
                                        {
                                                try
                                                {
-                                                       asyncAction->execute(p);
+                                                       
asyncAction->execute(tempPool);
                                                }
                                                catch (std::exception& ex)
                                                {
@@ -330,10 +337,10 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
                                        , rollover1->getAppend()
                                        );
                                _priv->setWriter(createWriter(os));
-
+                               helpers::Pool tempPool;
                                bool success = true; // A synchronous action is 
not required
                                if (auto pAction = rollover1->getSynchronous())
-                                       success = pAction->execute(p);
+                                       success = pAction->execute(tempPool);
 
                                if (success)
                                {
@@ -350,7 +357,7 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
                                        {
                                                try
                                                {
-                                                       asyncAction->execute(p);
+                                                       
asyncAction->execute(tempPool);
                                                }
                                                catch (std::exception& ex)
                                                {
@@ -369,6 +376,12 @@ bool 
MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const Trigge
 
        return result;
 }
+#if LOG4CXX_ABI_VERSION <= 15
+bool MultiprocessRollingFileAppender::synchronizedRollover(Pool& p, const 
TriggeringPolicyPtr& trigger)
+{
+       return synchronizedRollover(trigger);
+}
+#endif
 
 /**
  * re-open \c fileName (used after it has been renamed)
@@ -389,7 +402,7 @@ void MultiprocessRollingFileAppender::reopenFile(const 
LogString& fileName)
 /**
  * {@inheritDoc}
 */
-void MultiprocessRollingFileAppender::subAppend(const LoggingEventPtr& event, 
Pool& p)
+void MultiprocessRollingFileAppender::subAppend( 
LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        // The rollover check must precede actual writing. This is the
        // only correct behavior for time driven triggers.
@@ -404,7 +417,7 @@ void MultiprocessRollingFileAppender::subAppend(const 
LoggingEventPtr& event, Po
                try
                {
                        _priv->_event = event;
-                       synchronizedRollover(p, _priv->triggeringPolicy);
+                       synchronizedRollover(_priv->triggeringPolicy);
                }
                catch (std::exception& ex)
                {
@@ -419,7 +432,7 @@ void MultiprocessRollingFileAppender::subAppend(const 
LoggingEventPtr& event, Po
        else if (isAlreadyRolled(fileName, &_priv->fileLength))
                reopenFile(fileName);
 
-       FileAppender::subAppend(event, p);
+       FileAppender::subAppend( LOG4CXX_APPEND_PARAMETERS );
 }
 
 /**
diff --git a/src/main/cpp/nteventlogappender.cpp 
b/src/main/cpp/nteventlogappender.cpp
index c6bff171..553d107c 100644
--- a/src/main/cpp/nteventlogappender.cpp
+++ b/src/main/cpp/nteventlogappender.cpp
@@ -213,7 +213,7 @@ void NTEventLogAppender::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAME
        }
 }
 
-void NTEventLogAppender::append(const LoggingEventPtr& event, Pool& p)
+void NTEventLogAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (priv->hEventLog == NULL)
        {
@@ -222,8 +222,9 @@ void NTEventLogAppender::append(const LoggingEventPtr& 
event, Pool& p)
        }
 
        LogString oss;
-       this->m_priv->layout->format(oss, event, p);
-       wchar_t* msgs = Transcoder::wencode(oss, p);
+       Pool tempPool;
+       this->m_priv->layout->format(oss, event, tempPool);
+       wchar_t* msgs = Transcoder::wencode(oss, tempPool);
        BOOL bSuccess = ::ReportEventW(
                        priv->hEventLog,
                        getEventType(event),
diff --git a/src/main/cpp/odbcappender.cpp b/src/main/cpp/odbcappender.cpp
index fcad8cd2..b9e9650d 100644
--- a/src/main/cpp/odbcappender.cpp
+++ b/src/main/cpp/odbcappender.cpp
@@ -260,14 +260,14 @@ void ODBCAppender::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS )
 }
 
 
-void ODBCAppender::append(const spi::LoggingEventPtr& event, 
LOG4CXX_NS::helpers::Pool& p)
+void ODBCAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
 #if LOG4CXX_HAVE_ODBC
        _priv->buffer.push_back(event);
 
        if (_priv->buffer.size() >= _priv->bufferSize)
        {
-               flushBuffer(p);
+               flushBuffer(_priv->pool);
        }
 
 #endif
diff --git a/src/main/cpp/outputdebugstringappender.cpp 
b/src/main/cpp/outputdebugstringappender.cpp
index e71d6be9..b4e9aa99 100644
--- a/src/main/cpp/outputdebugstringappender.cpp
+++ b/src/main/cpp/outputdebugstringappender.cpp
@@ -32,10 +32,11 @@ OutputDebugStringAppender::OutputDebugStringAppender()
 {
 }
 
-void OutputDebugStringAppender::append(const spi::LoggingEventPtr& event, 
Pool& p)
+void OutputDebugStringAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        LogString buf;
-       this->m_priv->layout->format(buf, event, p);
+       Pool tempPool;
+       this->m_priv->layout->format(buf, event, tempPool);
 #if LOG4CXX_WCHAR_T_API
        LOG4CXX_ENCODE_WCHAR(wstr, buf);
        ::OutputDebugStringW(wstr.c_str());
diff --git a/src/main/cpp/rollingfileappender.cpp 
b/src/main/cpp/rollingfileappender.cpp
index 463628ad..e5d8ef04 100644
--- a/src/main/cpp/rollingfileappender.cpp
+++ b/src/main/cpp/rollingfileappender.cpp
@@ -286,23 +286,29 @@ bool 
RollingFileAppender::RollingFileAppenderPriv::activateOptions()
 
  * @return true if rollover performed.
  */
-bool RollingFileAppender::rollover(Pool& p)
+bool RollingFileAppender::rollover()
 {
        std::lock_guard<std::recursive_mutex> lock(_priv->mutex);
-       return rolloverInternal(p);
+       return rolloverInternal();
+}
+#if LOG4CXX_ABI_VERSION <= 15
+bool RollingFileAppender::rollover(Pool& p)
+{
+       return rollover();
 }
+#endif
 
-bool RollingFileAppender::rolloverInternal(Pool& p)
+bool RollingFileAppender::rolloverInternal()
 {
        //
        //   can't roll without a policy
        //
        if (_priv->rollingPolicy != NULL)
        {
-
                {
                                try
                                {
+                                       Pool p;
                                        RolloverDescriptionPtr 
rollover1(_priv->rollingPolicy->rollover(this->getFile(), this->getAppend(), 
p));
 
                                        if (rollover1 != NULL)
@@ -429,11 +435,17 @@ bool RollingFileAppender::rolloverInternal(Pool& p)
 
        return false;
 }
+#if LOG4CXX_ABI_VERSION <= 15
+bool RollingFileAppender::rolloverInternal(Pool&)
+{
+       return rolloverInternal();
+}
+#endif
 
 /**
  * {@inheritDoc}
 */
-void RollingFileAppender::subAppend(const LoggingEventPtr& event, Pool& p)
+void RollingFileAppender::subAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        // The rollover check must precede actual writing. This is the
        // only correct behavior for time driven triggers.
@@ -449,7 +461,7 @@ void RollingFileAppender::subAppend(const LoggingEventPtr& 
event, Pool& p)
                try
                {
                        _priv->_event = event;
-                       rolloverInternal(p);
+                       rolloverInternal();
                }
                catch (std::exception& ex)
                {
@@ -460,7 +472,7 @@ void RollingFileAppender::subAppend(const LoggingEventPtr& 
event, Pool& p)
                }
        }
 
-       FileAppender::subAppend(event, p);
+       FileAppender::subAppend( LOG4CXX_APPEND_PARAMETERS );
 }
 
 /**
diff --git a/src/main/cpp/smtpappender.cpp b/src/main/cpp/smtpappender.cpp
index 00be169c..e9605c22 100644
--- a/src/main/cpp/smtpappender.cpp
+++ b/src/main/cpp/smtpappender.cpp
@@ -629,7 +629,7 @@ void SMTPAppender::activateOptions( 
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS )
 Perform SMTPAppender specific appending actions, mainly adding
 the event to a cyclic buffer and checking if the event triggers
 an e-mail to be sent. */
-void SMTPAppender::append(const spi::LoggingEventPtr& event, Pool& p)
+void SMTPAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (!checkEntryConditions())
        {
@@ -643,6 +643,7 @@ void SMTPAppender::append(const spi::LoggingEventPtr& 
event, Pool& p)
 
        if (_priv->evaluator->isTriggeringEvent(event))
        {
+               Pool p;
                sendBuffer(p);
        }
 }
diff --git a/src/main/cpp/syslogappender.cpp b/src/main/cpp/syslogappender.cpp
index 5a116274..1217f2d2 100644
--- a/src/main/cpp/syslogappender.cpp
+++ b/src/main/cpp/syslogappender.cpp
@@ -270,16 +270,17 @@ int SyslogAppender::getFacility(
        }
 }
 
-void SyslogAppender::append(const spi::LoggingEventPtr& event, Pool& p)
+void SyslogAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if  (!isAsSevereAsThreshold(event->getLevel()))
        {
                return;
        }
 
+       helpers::Pool tempPool;
        LogString msg;
        std::string encoded;
-       _priv->layout->format(msg, event, p);
+       _priv->layout->format(msg, event, tempPool);
 
        Transcoder::encode(msg, encoded);
 
diff --git a/src/main/cpp/telnetappender.cpp b/src/main/cpp/telnetappender.cpp
index e0ddda5c..aabf1ae7 100644
--- a/src/main/cpp/telnetappender.cpp
+++ b/src/main/cpp/telnetappender.cpp
@@ -270,19 +270,20 @@ void TelnetAppender::writeStatus(const SocketPtr& socket, 
const LogString& msg,
        }
 }
 
-void TelnetAppender::append(const spi::LoggingEventPtr& event, Pool& p)
+void TelnetAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        ++_priv->eventCount;
        if (0 < _priv->activeConnections)
        {
+               helpers::Pool tempPool;
                LogString msg;
                if (_priv->layout)
-                       _priv->layout->format(msg, event, p);
+                       _priv->layout->format(msg, event, tempPool);
                else
                        msg = event->getRenderedMessage();
                msg.append(LOG4CXX_STR("\r\n"));
                size_t bytesSize = msg.size() * 2;
-               char* bytes = p.pstralloc(bytesSize);
+               char* bytes = tempPool.pstralloc(bytesSize);
 
                LogString::const_iterator msgIter(msg.begin());
                ByteBuffer buf(bytes, bytesSize);
diff --git a/src/main/cpp/writerappender.cpp b/src/main/cpp/writerappender.cpp
index f86c1b7f..a55eb591 100644
--- a/src/main/cpp/writerappender.cpp
+++ b/src/main/cpp/writerappender.cpp
@@ -88,7 +88,7 @@ void WriterAppender::WriterAppenderPriv::activateOptions()
        }
 }
 
-void WriterAppender::append(const spi::LoggingEventPtr& event, Pool& pool1)
+void WriterAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
 
        if (!checkEntryConditions())
@@ -96,7 +96,7 @@ void WriterAppender::append(const spi::LoggingEventPtr& 
event, Pool& pool1)
                return;
        }
 
-       subAppend(event, pool1);
+       subAppend( LOG4CXX_APPEND_PARAMETERS );
 }
 
 /**
@@ -215,22 +215,23 @@ void WriterAppender::setEncoding(const LogString& enc)
        _priv->encoding = enc;
 }
 
-void WriterAppender::subAppend(const spi::LoggingEventPtr& event, Pool& p)
+void WriterAppender::subAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
 #if ENABLE_FAILING_APPENDER_SIMULATION_TESTING
        if (event->getRenderedMessage() == _priv->exceptionTriggeringMessage)
                throw RuntimeException(LOG4CXX_STR("Simulated fault"));
 #endif
+       Pool tempPool;
        LogString msg;
-       _priv->layout->format(msg, event, p);
+       _priv->layout->format(msg, event, tempPool);
 
        if (_priv->writer != NULL)
        {
-               _priv->writer->write(msg, p);
+               _priv->writer->write(msg, tempPool);
 
                if (_priv->immediateFlush)
                {
-                       _priv->writer->flush(p);
+                       _priv->writer->flush(tempPool);
                }
        }
 }
diff --git a/src/main/cpp/xmlsocketappender.cpp 
b/src/main/cpp/xmlsocketappender.cpp
index 55ccb035..d110a655 100644
--- a/src/main/cpp/xmlsocketappender.cpp
+++ b/src/main/cpp/xmlsocketappender.cpp
@@ -130,10 +130,11 @@ void XMLSocketAppender::XMLSocketAppenderPriv::close()
        }
 }
 
-void XMLSocketAppender::append(const spi::LoggingEventPtr& event, 
LOG4CXX_NS::helpers::Pool& p)
+void XMLSocketAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (_priv->writer)
        {
+               Pool p;
                LogString output;
                _priv->layout->format(output, event, p);
 
diff --git a/src/main/include/log4cxx/appender.h 
b/src/main/include/log4cxx/appender.h
index 1289cea0..45878b5c 100644
--- a/src/main/include/log4cxx/appender.h
+++ b/src/main/include/log4cxx/appender.h
@@ -88,9 +88,26 @@ class LOG4CXX_EXPORT Appender
                 Loggers will call the <code>doAppend</code> method of appender
                 implementations in order to log.
                */
+#if LOG4CXX_ABI_VERSION <= 15
+#define LOG4CXX_APPEND_FORMAL_PARAMETERS const spi::LoggingEventPtr& event, 
helpers::Pool& p
+#define LOG4CXX_APPEND_PARAMETERS event, p
+               void doAppend(const spi::LoggingEventPtr& event);
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               Implement this method for now, but plan to migrate to 
doAppend() without a helpers::Pool parameter.
+               */
                virtual void doAppend(const spi::LoggingEventPtr& event,
                        LOG4CXX_NS::helpers::Pool& pool) = 0;
-
+#else
+#define LOG4CXX_APPEND_FORMAL_PARAMETERS const spi::LoggingEventPtr& event
+#define LOG4CXX_APPEND_PARAMETERS event
+               virtual void doAppend(const spi::LoggingEventPtr& event) = 0;
+               /**
+               @deprecated The \c pool parameter is not used and will be 
removed in a future version.
+               */
+               [[deprecated("Use doAppend() without a Pool parameter 
instead")]]
+               void doAppend(const spi::LoggingEventPtr& event, helpers::Pool& 
pool);
+#endif
 
                /**
                 Get the name of this appender. The name uniquely identifies the
diff --git a/src/main/include/log4cxx/appenderskeleton.h 
b/src/main/include/log4cxx/appenderskeleton.h
index a9557a67..679b9142 100644
--- a/src/main/include/log4cxx/appenderskeleton.h
+++ b/src/main/include/log4cxx/appenderskeleton.h
@@ -52,15 +52,14 @@ class LOG4CXX_EXPORT AppenderSkeleton
                method to perform actual logging. See also 
AppenderSkeleton::doAppend
                method.
                */
-               virtual void append(const spi::LoggingEventPtr& event, 
helpers::Pool& p) = 0;
+               virtual void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) = 0;
 
                /**
                * Compare \c event level against the appender threshold and 
check that \c event is accepted.
                * If \c event is accepted, delegate log output to the subclass 
implementation of
                * the AppenderSkeleton#append method.
                * */
-               void doAppendImpl(const spi::LoggingEventPtr& event, 
helpers::Pool& pool);
-
+               void doAppendImpl( LOG4CXX_APPEND_FORMAL_PARAMETERS );
                /**
                * Does no attached filter deny \c event or does an attached 
filter accept \c event?
                */
@@ -167,7 +166,7 @@ class LOG4CXX_EXPORT AppenderSkeleton
                *
                * Reimplement this method in your appender if you use a 
different concurrency control technique.
                * */
-               void doAppend(const spi::LoggingEventPtr& event, helpers::Pool& 
pool) override;
+               void doAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
                /**
                Set the {@link spi::ErrorHandler ErrorHandler} for this 
Appender.
diff --git a/src/main/include/log4cxx/asyncappender.h 
b/src/main/include/log4cxx/asyncappender.h
index 8ce23ccb..9ba6b520 100644
--- a/src/main/include/log4cxx/asyncappender.h
+++ b/src/main/include/log4cxx/asyncappender.h
@@ -127,15 +127,14 @@ class LOG4CXX_EXPORT AsyncAppender :
                /**
                * Call AppenderSkeleton#doAppendImpl without acquiring a lock.
                */
-               void doAppend(const spi::LoggingEventPtr& event,
-                       helpers::Pool& pool1) override;
+               void doAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
                /**
                * Add \c event to a ring buffer.
                * The behaviour when the ring buffer is full
                * is controlled by the [Blocking property](@ref 
BlockingProperty) value.
                */
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
                /**
                Close this <code>AsyncAppender</code> by interrupting the
diff --git a/src/main/include/log4cxx/db/dbappender.h 
b/src/main/include/log4cxx/db/dbappender.h
index 163da909..a56d32b8 100644
--- a/src/main/include/log4cxx/db/dbappender.h
+++ b/src/main/include/log4cxx/db/dbappender.h
@@ -146,7 +146,7 @@ class LOG4CXX_EXPORT DBAppender : public AppenderSkeleton
                 /**
                 * Adds the event to the buffer.  When full the buffer is 
flushed.
                 */
-                void append(const spi::LoggingEventPtr& event, helpers::Pool&) 
override;
+                void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
                 void close() override;
 
diff --git a/src/main/include/log4cxx/db/odbcappender.h 
b/src/main/include/log4cxx/db/odbcappender.h
index 5d4de206..c09fb36b 100644
--- a/src/main/include/log4cxx/db/odbcappender.h
+++ b/src/main/include/log4cxx/db/odbcappender.h
@@ -184,7 +184,7 @@ class LOG4CXX_EXPORT ODBCAppender : public AppenderSkeleton
                /**
                * Adds the event to the buffer.  When full the buffer is 
flushed.
                */
-               void append(const spi::LoggingEventPtr& event, helpers::Pool&) 
override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
        protected:
 #if LOG4CXX_ABI_VERSION <= 15
diff --git a/src/main/include/log4cxx/helpers/appenderattachableimpl.h 
b/src/main/include/log4cxx/helpers/appenderattachableimpl.h
index 289512e9..fceb77f1 100644
--- a/src/main/include/log4cxx/helpers/appenderattachableimpl.h
+++ b/src/main/include/log4cxx/helpers/appenderattachableimpl.h
@@ -63,11 +63,19 @@ class LOG4CXX_EXPORT AppenderAttachableImpl :
                 */
                void addAppender(const AppenderPtr newAppender) override;
 
+#if LOG4CXX_ABI_VERSION <= 15
                /**
                 Call the <code>doAppend</code> method on all attached 
appenders.
+               @deprecated This function is deprecated and will be removed in 
a future version.
                */
+               [[ deprecated( "Pool is no longer required" ) ]]
                int appendLoopOnAppenders(const spi::LoggingEventPtr& event,
                        LOG4CXX_NS::helpers::Pool& p);
+#endif
+               /**
+                Send \c event to all attached appenders.
+               */
+               int appendLoopOnAppenders(const spi::LoggingEventPtr& event);
 
                /**
                 * Get all previously added appenders as an Enumeration.
diff --git a/src/main/include/log4cxx/logger.h 
b/src/main/include/log4cxx/logger.h
index 01bad91f..7c801e5c 100644
--- a/src/main/include/log4cxx/logger.h
+++ b/src/main/include/log4cxx/logger.h
@@ -70,6 +70,7 @@ class LOG4CXX_EXPORT Logger
                */
                Logger(const LogString& name);
 #if LOG4CXX_ABI_VERSION <= 15
+               /// @deprecated This function is deprecated and will be removed 
in a future version.
                [[ deprecated( "Pool is no longer required" ) ]]
                Logger(helpers::Pool& pool, const LogString& name);
 #endif
@@ -86,6 +87,7 @@ class LOG4CXX_EXPORT Logger
                void addAppender(const AppenderPtr newAppender) override;
 
 
+#if LOG4CXX_ABI_VERSION <= 15
                /**
                Call the appenders in the hierrachy starting at
                <code>this</code>.  If no appenders could be found, emit a
@@ -97,8 +99,17 @@ class LOG4CXX_EXPORT Logger
 
                @param event the event to log.
                @param p memory pool for any allocations needed to process 
request.
+               @deprecated This function is deprecated and will be removed in 
a future version.
                */
+               [[ deprecated( "Pool is no longer required" ) ]]
                void callAppenders(const spi::LoggingEventPtr& event, 
helpers::Pool& p) const;
+#endif
+               /**
+               Send \c event to all appenders attached to this or attached to 
a parent of this.
+               If no appenders are found, emit a warning.
+               This method does not check the \c event level.
+               */
+               void callAppenders(const spi::LoggingEventPtr& event) const;
 
                /**
                Close all attached appenders implementing the AppenderAttachable
diff --git a/src/main/include/log4cxx/net/smtpappender.h 
b/src/main/include/log4cxx/net/smtpappender.h
index f108bec9..d7107697 100644
--- a/src/main/include/log4cxx/net/smtpappender.h
+++ b/src/main/include/log4cxx/net/smtpappender.h
@@ -147,7 +147,7 @@ class LOG4CXX_EXPORT SMTPAppender : public AppenderSkeleton
                Perform SMTPAppender specific appending actions, mainly adding
                the event to a cyclic buffer and checking if the event triggers
                an e-mail to be sent. */
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
 
                void close() override;
diff --git a/src/main/include/log4cxx/net/syslogappender.h 
b/src/main/include/log4cxx/net/syslogappender.h
index 9b4072c2..a080d662 100644
--- a/src/main/include/log4cxx/net/syslogappender.h
+++ b/src/main/include/log4cxx/net/syslogappender.h
@@ -73,7 +73,7 @@ class LOG4CXX_EXPORT SyslogAppender : public AppenderSkeleton
                */
                static int getFacility(const LogString& facilityName);
 
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
 #if LOG4CXX_ABI_VERSION <= 15
                /**
diff --git a/src/main/include/log4cxx/net/telnetappender.h 
b/src/main/include/log4cxx/net/telnetappender.h
index e52bb6c9..4f1fc705 100644
--- a/src/main/include/log4cxx/net/telnetappender.h
+++ b/src/main/include/log4cxx/net/telnetappender.h
@@ -168,7 +168,7 @@ class LOG4CXX_EXPORT TelnetAppender : public 
AppenderSkeleton
        protected:
                /** Send \c event to each connected client.
                */
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
        private:
                //   prevent copy and assignment statements
diff --git a/src/main/include/log4cxx/net/xmlsocketappender.h 
b/src/main/include/log4cxx/net/xmlsocketappender.h
index 5985611c..f22f036f 100644
--- a/src/main/include/log4cxx/net/xmlsocketappender.h
+++ b/src/main/include/log4cxx/net/xmlsocketappender.h
@@ -145,7 +145,7 @@ class LOG4CXX_EXPORT XMLSocketAppender : public 
SocketAppenderSkeleton
 
                int getDefaultPort() const override;
 
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
pool) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
        private:
                //  prevent copy and assignment statements
diff --git a/src/main/include/log4cxx/nt/nteventlogappender.h 
b/src/main/include/log4cxx/nt/nteventlogappender.h
index 3f755fa4..2ebbf969 100644
--- a/src/main/include/log4cxx/nt/nteventlogappender.h
+++ b/src/main/include/log4cxx/nt/nteventlogappender.h
@@ -99,7 +99,7 @@ class LOG4CXX_EXPORT NTEventLogAppender : public 
AppenderSkeleton
                typedef void SID;
                typedef void* HANDLE;
 
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
                static unsigned short getEventType(const spi::LoggingEventPtr& 
event);
                static unsigned short getEventCategory(const 
spi::LoggingEventPtr& event);
                /*
diff --git a/src/main/include/log4cxx/nt/outputdebugstringappender.h 
b/src/main/include/log4cxx/nt/outputdebugstringappender.h
index 4b68e6c8..24ca2410 100644
--- a/src/main/include/log4cxx/nt/outputdebugstringappender.h
+++ b/src/main/include/log4cxx/nt/outputdebugstringappender.h
@@ -42,7 +42,7 @@ class LOG4CXX_EXPORT OutputDebugStringAppender : public 
AppenderSkeleton
 
                void close() override {}
 
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 };
 }
 }
diff --git a/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h 
b/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
index 7ce9d8c5..f2d7291f 100644
--- a/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
+++ b/src/main/include/log4cxx/rolling/multiprocessrollingfileappender.h
@@ -72,14 +72,17 @@ class LOG4CXX_EXPORT MultiprocessRollingFileAppender : 
public RollingFileAppende
                   <code>File</code> is truncated with no backup files created.
 
                 */
-               bool rollover(helpers::Pool& p);
+               bool rollover();
+#if LOG4CXX_ABI_VERSION <= 15
+               bool rollover(LOG4CXX_NS::helpers::Pool& p);
+#endif
 
        protected:
 
                /**
                 Actual writing occurs here.
                */
-               void subAppend(const spi::LoggingEventPtr& event, 
helpers::Pool& p) override;
+               void subAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
        protected:
                /**
@@ -99,7 +102,10 @@ class LOG4CXX_EXPORT MultiprocessRollingFileAppender : 
public RollingFileAppende
 
                 * @return true if this process perfomed the rollover.
                 */
+               bool synchronizedRollover(const TriggeringPolicyPtr& trigger = 
TriggeringPolicyPtr() );
+#if LOG4CXX_ABI_VERSION <= 15
                bool synchronizedRollover(helpers::Pool& p, const 
TriggeringPolicyPtr& trigger = TriggeringPolicyPtr() );
+#endif
 
                /**
                 * Set the length of current active log file to \c length bytes.
diff --git a/src/main/include/log4cxx/rolling/rollingfileappender.h 
b/src/main/include/log4cxx/rolling/rollingfileappender.h
index a6353dd1..7d0fa0dd 100644
--- a/src/main/include/log4cxx/rolling/rollingfileappender.h
+++ b/src/main/include/log4cxx/rolling/rollingfileappender.h
@@ -169,16 +169,22 @@ class LOG4CXX_EXPORT RollingFileAppender : public 
FileAppender
                   <code>File</code> is truncated with no backup files created.
 
                 */
+               bool rollover();
+#if LOG4CXX_ABI_VERSION <= 15
                bool rollover(LOG4CXX_NS::helpers::Pool& p);
+#endif
 
        protected:
 
                /**
                 Actual writing occurs here.
                */
-               void subAppend(const spi::LoggingEventPtr& event, 
helpers::Pool& p) override;
+               void subAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
+               bool rolloverInternal();
+#if LOG4CXX_ABI_VERSION <= 15
                bool rolloverInternal(LOG4CXX_NS::helpers::Pool& p);
+#endif
 
        public:
                /**
diff --git a/src/main/include/log4cxx/writerappender.h 
b/src/main/include/log4cxx/writerappender.h
index 3e38f83a..ddb0f888 100644
--- a/src/main/include/log4cxx/writerappender.h
+++ b/src/main/include/log4cxx/writerappender.h
@@ -93,7 +93,7 @@ class LOG4CXX_EXPORT WriterAppender : public AppenderSkeleton
                layout.
 
                */
-               void append(const spi::LoggingEventPtr& event, helpers::Pool& 
p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
 
        protected:
@@ -181,7 +181,7 @@ class LOG4CXX_EXPORT WriterAppender : public 
AppenderSkeleton
                /**
                 Actual writing occurs here.
                */
-               virtual void subAppend(const spi::LoggingEventPtr& event, 
helpers::Pool& p);
+               virtual void subAppend( LOG4CXX_APPEND_FORMAL_PARAMETERS );
 
 
 #if LOG4CXX_ABI_VERSION <= 15
diff --git a/src/site/doxy/Doxyfile.in b/src/site/doxy/Doxyfile.in
index 56c21fcc..6afae8be 100644
--- a/src/site/doxy/Doxyfile.in
+++ b/src/site/doxy/Doxyfile.in
@@ -2350,10 +2350,13 @@ PREDEFINED             = LOG4CXX_NS=log4cxx \
                          LOG4CXX_UNICHAR_API \
                          LOG4CXX_CFSTRING_API \
                          LOG4CXX_ABI_VERSION=@log4cxx_ABI_VER@ \
-                         
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS=helpers::Pool& p \
+                         
LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS="helpers::Pool& p" \
                          LOG4CXX_ACTIVATE_OPTIONS_PARAMETER=p \
+                         LOG4CXX_APPEND_FORMAL_PARAMETERS="const 
spi::LoggingEventPtr& event, helpers::Pool& p" \
+                         LOG4CXX_APPEND_PARAMETERS="event, p" \
                          LOG4CXX_HAS_DOMCONFIGURATOR=1 \
-                         LOG4CXX_ASYNC_BUFFER_SUPPORTS_FMT=1
+                         LOG4CXX_ASYNC_BUFFER_SUPPORTS_FMT=1 \
+                         __LOG4CXX_FUNC__=compiler_dependent
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
 # tag can be used to specify a list of macro names that should be expanded. The
diff --git a/src/test/cpp/asyncappendertestcase.cpp 
b/src/test/cpp/asyncappendertestcase.cpp
index 4fce26e8..265eced6 100644
--- a/src/test/cpp/asyncappendertestcase.cpp
+++ b/src/test/cpp/asyncappendertestcase.cpp
@@ -77,7 +77,7 @@ class NullPointerAppender : public AppenderSkeleton
                /**
                 * @{inheritDoc}
                 */
-               void append(const spi::LoggingEventPtr&, 
LOG4CXX_NS::helpers::Pool&) override
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
                {
                        throw RuntimeException(LOG4CXX_STR("Intentional 
Exception"));
                }
@@ -110,10 +110,10 @@ class BlockableVectorAppender : public VectorAppender
                /**
                 * {@inheritDoc}
                 */
-               void append(const spi::LoggingEventPtr& event, 
LOG4CXX_NS::helpers::Pool& p) override
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
                {
                        std::lock_guard<std::mutex> lock( blocker );
-                       VectorAppender::append(event, p);
+                       VectorAppender::append( LOG4CXX_APPEND_PARAMETERS );
                }
 
                std::mutex& getBlocker()
@@ -130,10 +130,10 @@ LOG4CXX_PTR_DEF(BlockableVectorAppender);
 class LoggingVectorAppender : public VectorAppender
 {
        LoggerInstancePtr logger{ "LoggingVectorAppender" };
-       void append(const spi::LoggingEventPtr& event, 
LOG4CXX_NS::helpers::Pool& p) override
+       void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
        {
                auto& lsMsg = event->getRenderedMessage();
-               VectorAppender::append(event, p);
+               VectorAppender::append( LOG4CXX_APPEND_PARAMETERS );
                if (LogString::npos != lsMsg.find(LOG4CXX_STR("World")))
                {
                        LOG4CXX_LOGLS(logger, Level::getError(), 
LOG4CXX_STR("Some appender error"));
diff --git a/src/test/cpp/benchmark/benchmark.cpp 
b/src/test/cpp/benchmark/benchmark.cpp
index 40658774..15b6263c 100644
--- a/src/test/cpp/benchmark/benchmark.cpp
+++ b/src/test/cpp/benchmark/benchmark.cpp
@@ -43,7 +43,7 @@ public:
                return true;
        }
 
-       void append(const spi::LoggingEventPtr& event, helpers::Pool& p) 
override
+       void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
        {
                LogString buf;
                m_priv->layout->format(buf, event, p);
diff --git a/src/test/cpp/levelchangetestcase.cpp 
b/src/test/cpp/levelchangetestcase.cpp
index 8befde16..48504ce2 100644
--- a/src/test/cpp/levelchangetestcase.cpp
+++ b/src/test/cpp/levelchangetestcase.cpp
@@ -37,7 +37,7 @@ class CountingAppender : public AppenderSkeleton
                void close() override
                {}
 
-               void append(const spi::LoggingEventPtr& /*event*/, 
helpers::Pool& /*p*/) override
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
                {
                        count++;
                }
diff --git a/src/test/cpp/loggertestcase.cpp b/src/test/cpp/loggertestcase.cpp
index 03671609..cee5aef7 100644
--- a/src/test/cpp/loggertestcase.cpp
+++ b/src/test/cpp/loggertestcase.cpp
@@ -50,7 +50,7 @@ class CountingAppender : public AppenderSkeleton
                void close() override
                {}
 
-               void append(const spi::LoggingEventPtr& /*event*/, Pool& /*p*/) 
override
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
                {
                        counter++;
                }
diff --git a/src/test/cpp/nt/nteventlogappendertestcase.cpp 
b/src/test/cpp/nt/nteventlogappendertestcase.cpp
index 01bd6101..d9e5fcb1 100644
--- a/src/test/cpp/nt/nteventlogappendertestcase.cpp
+++ b/src/test/cpp/nt/nteventlogappendertestcase.cpp
@@ -75,10 +75,10 @@ class NTEventLogAppenderTestCase : public 
AppenderSkeletonTestCase
                        }
 
 
-                       Pool p;
                        Date now;
                        DWORD expectedTime = now.getTime() / 
Date::getMicrosecondsPerSecond();
                        {
+                               Pool p;
                                NTEventLogAppenderPtr appender(new 
NTEventLogAppender());
                                
appender->setSource(LOG4CXX_STR("log4cxx_test"));
                                LayoutPtr layout(new 
PatternLayout(LOG4CXX_STR("%c - %m%n")));
@@ -87,7 +87,7 @@ class NTEventLogAppenderTestCase : public 
AppenderSkeletonTestCase
 
                                LoggingEventPtr event(new LoggingEvent(
                                                LOG4CXX_STR("org.foobar"), 
Level::getInfo(), LOG4CXX_STR("Hello,  World"), LOG4CXX_LOCATION));
-                               appender->doAppend(event, p);
+                               appender->doAppend( LOG4CXX_APPEND_PARAMETERS );
                        }
                        hEventLog = ::OpenEventLogW(NULL, L"log4cxx_test");
                        LOGUNIT_ASSERT(hEventLog != NULL);
diff --git a/src/test/cpp/optionhandlertest.cpp 
b/src/test/cpp/optionhandlertest.cpp
index c4483ff4..9e4d2206 100644
--- a/src/test/cpp/optionhandlertest.cpp
+++ b/src/test/cpp/optionhandlertest.cpp
@@ -34,7 +34,7 @@ public:
        void close() override
        {}
 
-       void append(const spi::LoggingEventPtr& /*event*/, helpers::Pool& 
/*p*/) override
+       void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
        {
                helpers::LogLog::debug(LOG4CXX_STR("ABI_15_Appender::append"));
        }
@@ -66,7 +66,7 @@ public:
        void close() override
        {}
 
-       void append(const spi::LoggingEventPtr& /*event*/, helpers::Pool& 
/*p*/) override
+       void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override
        {
                helpers::LogLog::debug(LOG4CXX_STR("BaseAppender::append"));
        }
diff --git a/src/test/cpp/rolling/manualrollingtest.cpp 
b/src/test/cpp/rolling/manualrollingtest.cpp
index eb7e54a2..31769d3d 100644
--- a/src/test/cpp/rolling/manualrollingtest.cpp
+++ b/src/test/cpp/rolling/manualrollingtest.cpp
@@ -91,7 +91,7 @@ public:
 
                                if (digit == 0)
                                {
-                                       rfa->rollover(pool);
+                                       rfa->rollover();
                                }
 
                                msg[7] = '0' + i / 10;
diff --git a/src/test/cpp/vectorappender.cpp b/src/test/cpp/vectorappender.cpp
index aa7999a3..6e8f95f5 100644
--- a/src/test/cpp/vectorappender.cpp
+++ b/src/test/cpp/vectorappender.cpp
@@ -24,7 +24,7 @@ using namespace log4cxx::helpers;
 
 IMPLEMENT_LOG4CXX_OBJECT(VectorAppender)
 
-void VectorAppender::append(const spi::LoggingEventPtr& event, Pool& /*p*/)
+void VectorAppender::append( LOG4CXX_APPEND_FORMAL_PARAMETERS )
 {
        if (0 < this->appendMillisecondDelay)
                std::this_thread::sleep_for( std::chrono::milliseconds( 
this->appendMillisecondDelay ) );
diff --git a/src/test/cpp/vectorappender.h b/src/test/cpp/vectorappender.h
index 25c47814..272907c8 100644
--- a/src/test/cpp/vectorappender.h
+++ b/src/test/cpp/vectorappender.h
@@ -42,7 +42,7 @@ class VectorAppender : public AppenderSkeleton
                This method is called by the AppenderSkeleton#doAppend
                method.
                */
-               void append(const spi::LoggingEventPtr& event, 
log4cxx::helpers::Pool& p) override;
+               void append( LOG4CXX_APPEND_FORMAL_PARAMETERS ) override;
 
                const std::vector<spi::LoggingEventPtr>& getVector() const
                {

Reply via email to