This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch reduce_macro_expansion_complexity in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit c90a72fb8c182e69932dc29121b18457634bd41c Author: Stephen Webb <[email protected]> AuthorDate: Mon Sep 9 14:30:03 2024 +1000 Reduce overhead of less commonly used logging macros --- src/main/cpp/logger.cpp | 45 ++++++++++++++ src/main/include/log4cxx/logger.h | 127 +++++++++++++++++++++++++++++--------- 2 files changed, 143 insertions(+), 29 deletions(-) diff --git a/src/main/cpp/logger.cpp b/src/main/cpp/logger.cpp index f319e72e..1177a725 100644 --- a/src/main/cpp/logger.cpp +++ b/src/main/cpp/logger.cpp @@ -175,6 +175,21 @@ void Logger::addEvent(const LevelPtr& level, std::string&& message, const Locati callAppenders(event, p); } +void Logger::addFatalEvent(std::string&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Fatal, std::move(message), location); +} + +void Logger::addErrorEvent(std::string&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Error, std::move(message), location); +} + +void Logger::addWarnEvent(std::string&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Warn, std::move(message), location); +} + void Logger::addInfoEvent(std::string&& message, const LocationInfo& location) const { addEvent(m_priv->levelData.Info, std::move(message), location); @@ -771,6 +786,21 @@ void Logger::addEvent(const LevelPtr& level, std::wstring&& message, const Locat callAppenders(event, p); } +void Logger::addFatalEvent(std::wstring&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Fatal, std::move(message), location); +} + +void Logger::addErrorEvent(std::wstring&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Error, std::move(message), location); +} + +void Logger::addWarnEvent(std::wstring&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Warn, std::move(message), location); +} + void Logger::addInfoEvent(std::wstring&& message, const LocationInfo& location) const { addEvent(m_priv->levelData.Info, std::move(message), location); @@ -949,6 +979,21 @@ void Logger::addEvent(const LevelPtr& level1, std::basic_string<UniChar>&& messa callAppenders(event, p); } +void Logger::addFatalEvent(std::basic_string<UniChar>&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Fatal, std::move(message), location); +} + +void Logger::addErrorEvent(std::basic_string<UniChar>&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Error, std::move(message), location); +} + +void Logger::addWarnEvent(std::basic_string<UniChar>&& message, const LocationInfo& location) const +{ + addEvent(m_priv->levelData.Warn, std::move(message), location); +} + void Logger::addInfoEvent(std::basic_string<UniChar>&& message, const LocationInfo& location) const { addEvent(m_priv->levelData.Info, std::move(message), location); diff --git a/src/main/include/log4cxx/logger.h b/src/main/include/log4cxx/logger.h index 1df80aa1..f4f9ce66 100644 --- a/src/main/include/log4cxx/logger.h +++ b/src/main/include/log4cxx/logger.h @@ -497,7 +497,7 @@ class LOG4CXX_EXPORT Logger #endif /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -507,7 +507,31 @@ class LOG4CXX_EXPORT Logger , const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new info level logging event containing \c message and \c location to attached appender(s). + Add a new fatal level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addFatalEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new error level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addErrorEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new warning level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addWarnEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new info level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -515,7 +539,7 @@ class LOG4CXX_EXPORT Logger void addInfoEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new debug level logging event containing \c message and \c location to attached appender(s). + Add a new debug level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -523,7 +547,7 @@ class LOG4CXX_EXPORT Logger void addDebugEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new trace level logging event containing \c message and \c location to attached appender(s). + Add a new trace level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -531,7 +555,7 @@ class LOG4CXX_EXPORT Logger void addTraceEvent(std::string&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -540,7 +564,7 @@ class LOG4CXX_EXPORT Logger void forcedLog(const LevelPtr& level, const std::string& message, const LOG4CXX_NS::spi::LocationInfo& location) const; /** - Add a new logging event containing \c message to attached appender(s). + Add a new logging event containing \c message to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -549,7 +573,7 @@ class LOG4CXX_EXPORT Logger #if LOG4CXX_WCHAR_T_API /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -559,7 +583,31 @@ class LOG4CXX_EXPORT Logger , const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new info level logging event containing \c message and \c location to attached appender(s). + Add a new fatal level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addFatalEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new error level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addErrorEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new warning level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addWarnEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + + /** + Add a new info level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -567,7 +615,7 @@ class LOG4CXX_EXPORT Logger void addInfoEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new debug level logging event containing \c message and \c location to attached appender(s). + Add a new debug level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -575,7 +623,7 @@ class LOG4CXX_EXPORT Logger void addDebugEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new trace level logging event containing \c message and \c location to attached appender(s). + Add a new trace level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -583,7 +631,7 @@ class LOG4CXX_EXPORT Logger void addTraceEvent(std::wstring&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -592,7 +640,7 @@ class LOG4CXX_EXPORT Logger void forcedLog(const LevelPtr& level, const std::wstring& message, const LOG4CXX_NS::spi::LocationInfo& location) const; /** - Add a new logging event containing \c message to attached appender(s). + Add a new logging event containing \c message to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -601,7 +649,7 @@ class LOG4CXX_EXPORT Logger #endif #if LOG4CXX_UNICHAR_API /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -610,21 +658,42 @@ class LOG4CXX_EXPORT Logger void addEvent(const LevelPtr& level, std::basic_string<UniChar>&& message, const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new info level logging event containing \c message and \c location to attached appender(s). + Add a new fatal level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addFatalEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + /** + Add a new error level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addErrorEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + /** + Add a new warning level logging event containing \c message and \c location to attached appender(s) + without further checks. + @param message The text to add to the logging event. + @param location The source code location of the logging request. + */ + void addWarnEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; + /** + Add a new info level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. */ void addInfoEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new debug level logging event containing \c message and \c location to attached appender(s). + Add a new debug level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. */ void addDebugEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new trace level logging event containing \c message and \c location to attached appender(s). + Add a new trace level logging event containing \c message and \c location to attached appender(s) without further checks. @param message The text to add to the logging event. @param location The source code location of the logging request. @@ -632,7 +701,7 @@ class LOG4CXX_EXPORT Logger void addTraceEvent(std::basic_string<UniChar>&& message,const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -650,7 +719,7 @@ class LOG4CXX_EXPORT Logger #endif #if LOG4CXX_CFSTRING_API /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -659,7 +728,7 @@ class LOG4CXX_EXPORT Logger void forcedLog(const LevelPtr& level, const CFStringRef& message, const LOG4CXX_NS::spi::LocationInfo& location) const; /** - Add a new logging event containing \c message to attached appender(s). + Add a new logging event containing \c message to attached appender(s) without further checks. @param level The logging event level. @param message The text to add to the logging event. @@ -667,7 +736,7 @@ class LOG4CXX_EXPORT Logger void forcedLog(const LevelPtr& level, const CFStringRef& message) const; #endif /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message the message string to log. @@ -677,7 +746,7 @@ class LOG4CXX_EXPORT Logger , const spi::LocationInfo& location = spi::LocationInfo::getLocationUnavailable()) const; /** - Add a new logging event containing \c message and \c location to attached appender(s). + Add a new logging event containing \c message and \c location to attached appender(s) without further checks. @param level The logging event level. @param message the message string to log. @@ -2282,7 +2351,7 @@ catch (const std::exception& ex) #define LOG4CXX_WARN(logger, message) do { \ if (::LOG4CXX_NS::Logger::isWarnEnabledFor(logger)) {\ ::LOG4CXX_NS::helpers::MessageBuffer oss_; \ - logger->addEvent(::LOG4CXX_NS::Level::getWarn(), oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) + logger->addWarnEvent(oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) /** Add a new logging event containing a message defined by \c fmt and <code>...</code> to attached appender(s) if \c logger is enabled for <code>WARN</code> events. @@ -2301,7 +2370,7 @@ catch (const std::exception& ex) */ #define LOG4CXX_WARN_FMT(logger, fmt, ...) do { \ if (::LOG4CXX_NS::Logger::isWarnEnabledFor(logger)) {\ - logger->addEvent(::LOG4CXX_NS::Level::getWarn(), ::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) + logger->addWarnEvent(::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) #else #define LOG4CXX_WARN(logger, message) #define LOG4CXX_WARN_FMT(logger, fmt, ...) @@ -2325,7 +2394,7 @@ catch (std::exception& ex) #define LOG4CXX_ERROR(logger, message) do { \ if (::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\ ::LOG4CXX_NS::helpers::MessageBuffer oss_; \ - logger->addEvent(::LOG4CXX_NS::Level::getError(), oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) + logger->addErrorEvent(oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) /** Add a new logging event containing a message defined by \c fmt and <code>...</code> to attached appender(s) if \c logger is enabled for <code>ERROR</code> events. @@ -2344,7 +2413,7 @@ catch (std::exception& ex) */ #define LOG4CXX_ERROR_FMT(logger, fmt, ...) do { \ if (::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\ - logger->addEvent(::LOG4CXX_NS::Level::getError(), ::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) + logger->addErrorEvent(::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) /** If \c condition is not true, add a new logging event containing \c message to attached appender(s) if \c logger is enabled for <code>ERROR</code> events. @@ -2357,7 +2426,7 @@ If \c condition is not true, add a new logging event containing \c message to at if (!(condition) && ::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\ ::LOG4CXX_NS::helpers::MessageBuffer oss_; \ LOG4CXX_STACKTRACE \ - logger->addEvent(::LOG4CXX_NS::Level::getError(), oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) + logger->addErrorEvent(oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) /** If \c condition is not true, add a new logging event containing @@ -2372,7 +2441,7 @@ if \c logger is enabled for <code>ERROR</code> events. #define LOG4CXX_ASSERT_FMT(logger, condition, fmt, ...) do { \ if (!(condition) && ::LOG4CXX_NS::Logger::isErrorEnabledFor(logger)) {\ LOG4CXX_STACKTRACE \ - logger->addEvent(::LOG4CXX_NS::Level::getError(), ::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) + logger->addErrorEvent(::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) #else #define LOG4CXX_ERROR(logger, message) @@ -2396,7 +2465,7 @@ LOG4CXX_FATAL(m_log, m_renderSystem->getName() << " is not supported"); #define LOG4CXX_FATAL(logger, message) do { \ if (::LOG4CXX_NS::Logger::isFatalEnabledFor(logger)) {\ ::LOG4CXX_NS::helpers::MessageBuffer oss_; \ - logger->addEvent(::LOG4CXX_NS::Level::getFatal(), oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) + logger->addFatalEvent(oss_.extract_str(oss_ << message), LOG4CXX_LOCATION); }} while (0) /** Add a new logging event containing a message defined by \c fmt and <code>...</code> to attached appender(s) if \c logger is enabled for <code>FATAL</code> events. @@ -2412,7 +2481,7 @@ LOG4CXX_FATAL_FMT(m_log, "{} is not supported", m_renderSystem->getName()); */ #define LOG4CXX_FATAL_FMT(logger, fmt, ...) do { \ if (::LOG4CXX_NS::Logger::isFatalEnabledFor(logger)) {\ - logger->addEvent(::LOG4CXX_NS::Level::getFatal(), ::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) + logger->addFatalEvent(::LOG4CXX_FORMAT_NS::format(fmt LOG4CXX_FMT_VA_ARG(__VA_ARGS__)), LOG4CXX_LOCATION); }} while (0) #else #define LOG4CXX_FATAL(logger, message) #define LOG4CXX_FATAL_FMT(logger, fmt, ...)
