Comments (8)
Unfortunately, the ##__VA_ARGS__
is just a GCC preprocessor extension and thus it is unusable due to portability.
If you are at a situation where you actually have no arguments to the macro then you should actually be using the LOG4CPLUS_*_STR()
macro instead.
from log4cplus.
Makes sense. Thanks!
from log4cplus.
It seems to me that omit the logFmt
argument will work fine! @wilx, @KyleL1
The patch of loggingmacros.h like this:
--- log4cplus-1.1.2.changed/include/log4cplus/loggingmacros.h 2014-08-24 01:57:57.702075110 +0800
+++ log4cplus-1.1.2/include/log4cplus/loggingmacros.h 2014-08-24 22:26:34.638196310 +0800
@@ -233,7 +233,7 @@
LOG4CPLUS_RESTORE_DOWHILE_WARNING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_MACRO_FMT_BODY(logger, logLevel, logFmt, ...) \
+#define LOG4CPLUS_MACRO_FMT_BODY(logger, logLevel, ...) \
LOG4CPLUS_SUPPRESS_DOWHILE_WARNING() \
do { \
log4cplus::Logger const & _l \
@@ -242,7 +242,7 @@
_l.isEnabledFor (log4cplus::logLevel), logLevel)) { \
LOG4CPLUS_MACRO_INSTANTIATE_SNPRINTF_BUF (_snpbuf); \
log4cplus::tchar const * _logEvent \
- = _snpbuf.print (logFmt, __VA_ARGS__); \
+ = _snpbuf.print (__VA_ARGS__); \
log4cplus::detail::macro_forced_log (_l, \
log4cplus::logLevel, _logEvent, \
__FILE__, __LINE__, LOG4CPLUS_MACRO_FUNCTION ()); \
@@ -251,7 +251,7 @@
LOG4CPLUS_RESTORE_DOWHILE_WARNING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_MACRO_FMT_BODY(logger, logLevel, logFmt, logArgs...) \
+#define LOG4CPLUS_MACRO_FMT_BODY(logger, logLevel, logArgs...) \
LOG4CPLUS_SUPPRESS_DOWHILE_WARNING() \
do { \
log4cplus::Logger const & _l \
@@ -260,7 +260,7 @@
_l.isEnabledFor (log4cplus::logLevel), logLevel)) { \
LOG4CPLUS_MACRO_INSTANTIATE_SNPRINTF_BUF (_snpbuf); \
log4cplus::tchar const * _logEvent \
- = _snpbuf.print (logFmt, logArgs); \
+ = _snpbuf.print (logArgs); \
log4cplus::detail::macro_forced_log (_l, \
log4cplus::logLevel, _logEvent, \
__FILE__, __LINE__, LOG4CPLUS_MACRO_FUNCTION ()); \
@@ -287,11 +287,11 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, TRACE_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_TRACE_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, TRACE_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_TRACE_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, TRACE_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_TRACE_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, TRACE_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_TRACE_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, TRACE_LOG_LEVEL, logArgs)
#endif
#else
@@ -318,20 +318,20 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, DEBUG_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_DEBUG_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, DEBUG_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_DEBUG_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, DEBUG_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_DEBUG_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, DEBUG_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_DEBUG_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, DEBUG_LOG_LEVEL, logArgs)
#endif
#else
#define LOG4CPLUS_DEBUG(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#define LOG4CPLUS_DEBUG_STR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_DEBUG_FMT(logger, logFmt, ...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_DEBUG_FMT(logger, ...) LOG4CPLUS_DOWHILE_NOTHING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_DEBUG_FMT(logger, logFmt, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_DEBUG_FMT(logger, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
#endif
#endif
@@ -348,20 +348,20 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, INFO_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_INFO_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, INFO_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_INFO_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, INFO_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_INFO_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, INFO_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_INFO_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, INFO_LOG_LEVEL, logArgs)
#endif
#else
#define LOG4CPLUS_INFO(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#define LOG4CPLUS_INFO_STR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_INFO_FMT(logger, logFmt, ...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_INFO_FMT(logger, ...) LOG4CPLUS_DOWHILE_NOTHING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_INFO_FMT(logger, logFmt, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_INFO_FMT(logger, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
#endif
#endif
@@ -378,20 +378,20 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, WARN_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_WARN_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, WARN_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_WARN_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, WARN_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_WARN_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, WARN_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_WARN_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, WARN_LOG_LEVEL, logArgs)
#endif
#else
#define LOG4CPLUS_WARN(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#define LOG4CPLUS_WARN_STR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_WARN_FMT(logger, logFmt, ...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_WARN_FMT(logger, ...) LOG4CPLUS_DOWHILE_NOTHING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_WARN_FMT(logger, logFmt, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_WARN_FMT(logger, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
#endif
#endif
@@ -408,20 +408,20 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, ERROR_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_ERROR_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, ERROR_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_ERROR_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, ERROR_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_ERROR_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, ERROR_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_ERROR_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, ERROR_LOG_LEVEL, logArgs)
#endif
#else
#define LOG4CPLUS_ERROR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#define LOG4CPLUS_ERROR_STR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_ERROR_FMT(logger, logFmt, ...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_ERROR_FMT(logger, ...) LOG4CPLUS_DOWHILE_NOTHING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_ERROR_FMT(logger, logFmt, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_ERROR_FMT(logger, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
#endif
#endif
@@ -438,20 +438,20 @@
LOG4CPLUS_MACRO_STR_BODY (logger, logEvent, FATAL_LOG_LEVEL)
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_FATAL_FMT(logger, logFmt, ...) \
- LOG4CPLUS_MACRO_FMT_BODY (logger, FATAL_LOG_LEVEL, logFmt, __VA_ARGS__)
+#define LOG4CPLUS_FATAL_FMT(logger, ...) \
+ LOG4CPLUS_MACRO_FMT_BODY (logger, FATAL_LOG_LEVEL, __VA_ARGS__)
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_FATAL_FMT(logger, logFmt, logArgs...) \
- LOG4CPLUS_MACRO_FMT_BODY(logger, FATAL_LOG_LEVEL, logFmt, logArgs)
+#define LOG4CPLUS_FATAL_FMT(logger, logArgs...) \
+ LOG4CPLUS_MACRO_FMT_BODY(logger, FATAL_LOG_LEVEL, logArgs)
#endif
#else
#define LOG4CPLUS_FATAL(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#define LOG4CPLUS_FATAL_STR(logger, logEvent) LOG4CPLUS_DOWHILE_NOTHING()
#if defined (LOG4CPLUS_HAVE_C99_VARIADIC_MACROS)
-#define LOG4CPLUS_FATAL_FMT(logger, logFmt, ...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_FATAL_FMT(logger, ...) LOG4CPLUS_DOWHILE_NOTHING()
#elif defined (LOG4CPLUS_HAVE_GNU_VARIADIC_MACROS)
-#define LOG4CPLUS_FATAL_FMT(logger, logFmt, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
+#define LOG4CPLUS_FATAL_FMT(logger, logArgs...) LOG4CPLUS_DOWHILE_NOTHING()
#endif
#endif
from log4cplus.
That fix is actually pretty clever one. While LOG4CPLUS_*_STR()
is there to be used in such situation, as long as the fix is portable, I find it acceptable.
from log4cplus.
@sfzhang Could you put the fix to your branch so that I can merge it?
from log4cplus.
OK! I will push it after fully testing.
from log4cplus.
New pull request sfzhang#39 for this issue.
from log4cplus.
I have merged the pull request.
from log4cplus.
Related Issues (20)
- ./configure fails using c++2a HOT 3
- How to configure PatternLayout to use __FUNCTION__ HOT 7
- A link error occurred while compiling the my program. HOT 4
- Question: Effect of LOG4CPLUS_REQUIRE_EXPLICIT_INITIALIZATION on Windows? HOT 5
- Setting log level through env in log config file HOT 3
- Help needed: how to periodically flush logger with appender's immediateFlush set to false? HOT 2
- log file name not change after rollover TimeBasedRollingFileAppender HOT 3
- log's maxsize>200kb,but it dosen't work HOT 2
- Opentelemetry integration HOT 1
- What kind of compilation options can correctly generate a multi-threaded logging library HOT 5
- Win64 application crash on exit HOT 1
- Why mingw can't complie log4cplus-2.1.1? HOT 1
- Sending logs from log4cplus to log4j via TCP HOT 1
- Is it possible to build log4cplus for QNX aarch64le? HOT 3
- Save all configuration in a file HOT 2
- Question: Which latest version of Log4cplus I should use on RedHat 7.9 with DevToolset11-toolchain ( GCC 11.2 ) compiler HOT 7
- Does not work when maxBackupIndex is set to 0 HOT 1
- Include Headers Possibly Causing Build Error HOT 5
- how to set FD_CLOEXEC for log4cplus HOT 1
- Inconsistent Log File Permissions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from log4cplus.