Possible TraceLogger Bug or TraceLogger Feature Request
Logging Framework for C++
Brought to you by:
wilx
Info:
log4cplus: V1.1.1
Windows: 8
log4cplus build: debug dll
Detail:
If you use %M in a PatternLayout you will get the previous logged function signature when using the macro LOG4CPLUS_TRACE_METHOD. Example code snipit:
void junk() { LOG4CPLUS_TRACE_METHOD(mylogger, "my mess"); // %M will be "int main()" } int main() { LOG4CPLUS_INFO(mylogger, "in main"); junk(); }
Please consider changing LOG4CPLUS_TRACE_METHOD macro from:
#define LOG4CPLUS_TRACE_METHOD(logger, logEvent) \ log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent, \ __FILE__, __LINE__);
To (Yes, I understand that means lots of changes to TraceLogger class and below.):
#define LOG4CPLUS_TRACE_METHOD(logger, logEvent) \ log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent, \ __FILE__, __LINE__, LOG4CPLUS_MACRO_FUNCTION());
Or change it any way that gets the function signature to work with %M.
Thanks
SLDR
(Stephen L. De Rudder)
This sounds reasonable. I will definitely take a look.
I have implemented the improvement in trunk. Getting it to work 1.1.x would require ABI breakage (again), which I would like to avoid. Bottom line, this will be part of 1.2.x.
Diff:
Thank you for fixing it. I look forward to getting V1.2 when you release it.
Thanks,
SLDR
(Stephen L. De Rudder)