Menu

#164 Possible TraceLogger Bug or TraceLogger Feature Request

v1.2.0
closed
5
2013-05-30
2013-05-25
sldr
No

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)

Discussion

  • Václav Haisman

    Václav Haisman - 2013-05-25

    This sounds reasonable. I will definitely take a look.

     
  • Václav Haisman

    Václav Haisman - 2013-05-25
    • assigned_to: Václav Zeman
     
  • Václav Haisman

    Václav Haisman - 2013-05-27

    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.

     
  • Václav Haisman

    Václav Haisman - 2013-05-27
    • labels: --> fixed, v1.2.0
     
  • Václav Haisman

    Václav Haisman - 2013-05-27
    • Group: v1.1.x --> v1.2.0
     
  • Václav Haisman

    Václav Haisman - 2013-05-27
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -6,7 +6,7 @@
     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:
    
    -~~~~~~
    +~~~~~~{.c}
     void junk()
     {
       LOG4CPLUS_TRACE_METHOD(mylogger, "my mess"); // %M will be "int main()"
    @@ -20,7 +20,7 @@
    
     Please consider changing LOG4CPLUS_TRACE_METHOD macro from:
    
    -~~~~~~
    +~~~~~~{.c}
     #define LOG4CPLUS_TRACE_METHOD(logger, logEvent)                        \
         log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent,    \
                                                        __FILE__, __LINE__);
    @@ -28,7 +28,7 @@
    
     To (Yes, I understand that means lots of changes to TraceLogger class and below.):
    
    -~~~~~~
    +~~~~~~{.c}
     #define LOG4CPLUS_TRACE_METHOD(logger, logEvent)                        \
         log4cplus::TraceLogger _log4cplus_trace_logger(logger, logEvent,    \
                           __FILE__, __LINE__, LOG4CPLUS_MACRO_FUNCTION());
    
     
  • sldr

    sldr - 2013-05-29

    Thank you for fixing it. I look forward to getting V1.2 when you release it.

    Thanks,
    SLDR
    (Stephen L. De Rudder)

     
  • Václav Haisman

    Václav Haisman - 2013-05-30
    • status: open --> closed
     

Log in to post a comment.