This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch next_abi_appender in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit 609aa7d1566704d78da7b4a4d2555c265cc72759 Author: Stephen Webb <[email protected]> AuthorDate: Sun May 3 17:10:34 2026 +1000 Simplify the Appender interface in a future ABI version --- 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 | 4 +- src/main/cpp/appenderskeleton.cpp | 8 ++-- src/main/cpp/asyncappender.cpp | 17 ++++---- 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/loggertestcase.cpp | 2 +- src/test/cpp/nt/nteventlogappendertestcase.cpp | 4 +- src/test/cpp/optionhandlertest.cpp | 4 +- src/test/cpp/vectorappender.cpp | 2 +- src/test/cpp/vectorappender.h | 2 +- 44 files changed, 208 insertions(+), 141 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..be03541c 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,7 +104,7 @@ int AppenderAttachableImpl::appendLoopOnAppenders(const spi::LoggingEventPtr& ev auto allAppenders = m_priv->getAppenders(); for (auto& appender : *allAppenders) { - appender->doAppend(event, p); + appender->doAppend(event); ++result; } } 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..84056b74 100644 --- a/src/main/cpp/asyncappender.cpp +++ b/src/main/cpp/asyncappender.cpp @@ -104,7 +104,7 @@ class DiscardSummary * * @return the new event. */ - LoggingEventPtr createEvent(Pool& p); + LoggingEventPtr createEvent(); #if LOG4CXX_ABI_VERSION <= 15 static @@ -340,16 +340,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 +585,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); @@ -628,7 +628,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 +657,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 +667,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..e105e45d 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) +{ + 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) +{ + 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..ae2ffe51 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) +{ + 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&) +{ + 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/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/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 {
