浏览代码

HPCC-13647 Avoid global jlog LogMsgPrepender

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Jake Smith 10 年之前
父节点
当前提交
03817a3084
共有 2 个文件被更改,包括 3 次插入34 次删除
  1. 0 27
      system/jlib/jlog.cpp
  2. 3 7
      system/jlib/jlog.hpp

+ 0 - 27
system/jlib/jlog.cpp

@@ -1165,15 +1165,6 @@ void LogMsgComponentReporter::report(const LogMsg & msg)
 
 // LogMsgPrepender
 
-LogMsgPrepender * LogMsgPrepender::setContext(LogMsgComponentReporter * r, char const * f, unsigned l)
-{
-    crit.enter();
-    reporter = r;
-    file = f;
-    line = l;
-    return this;
-}
-
 void LogMsgPrepender::report(const LogMsgCategory & cat, const char * format, ...)
 {
     StringBuffer buff;
@@ -1185,7 +1176,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, const char * format, ..
     else
         queryLogMsgManager()->report_va(cat, unknownJob, buff.str(), args);
     va_end(args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report_va(const LogMsgCategory & cat, const char * format, va_list args)
@@ -1196,7 +1186,6 @@ void LogMsgPrepender::report_va(const LogMsgCategory & cat, const char * format,
         reporter->report_va(cat, unknownJob, buff.str(), args);
     else
         queryLogMsgManager()->report_va(cat, unknownJob, buff.str(), args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report(const LogMsgCategory & cat, LogMsgCode code, const char * format, ...)
@@ -1210,7 +1199,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, LogMsgCode code, const
     else
         queryLogMsgManager()->report_va(cat, unknownJob, buff.str(), args);
     va_end(args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report_va(const LogMsgCategory & cat, LogMsgCode code, const char * format, va_list args)
@@ -1221,7 +1209,6 @@ void LogMsgPrepender::report_va(const LogMsgCategory & cat, LogMsgCode code, con
         reporter->report_va(cat, unknownJob, buff.str(), args);
     else
         queryLogMsgManager()->report_va(cat, unknownJob, buff.str(), args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report(const LogMsgCategory & cat, const IException * exception, const char * prefix)
@@ -1234,7 +1221,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, const IException * exce
         reporter->report(cat, unknownJob, exception->errorCode(), "%s",  buff.str());
     else
         queryLogMsgManager()->report(cat, unknownJob, exception->errorCode(), "%s", buff.str());
-    crit.leave();
 }
 
 void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & job, const char * format, ...)
@@ -1248,7 +1234,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & j
     else
         queryLogMsgManager()->report_va(cat, job, buff.str(), args);
     va_end(args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report_va(const LogMsgCategory & cat, const LogMsgJobInfo & job, const char * format, va_list args)
@@ -1259,7 +1244,6 @@ void LogMsgPrepender::report_va(const LogMsgCategory & cat, const LogMsgJobInfo
         reporter->report_va(cat, job, buff.str(), args);
     else
         queryLogMsgManager()->report_va(cat, job, buff.str(), args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & job, LogMsgCode code, const char * format, ...)
@@ -1273,7 +1257,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & j
     else
         queryLogMsgManager()->report_va(cat, job, buff.str(), args);
     va_end(args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report_va(const LogMsgCategory & cat, const LogMsgJobInfo & job, LogMsgCode code, const char * format, va_list args)
@@ -1284,7 +1267,6 @@ void LogMsgPrepender::report_va(const LogMsgCategory & cat, const LogMsgJobInfo
         reporter->report_va(cat, job, buff.str(), args);
     else
         queryLogMsgManager()->report_va(cat, job, buff.str(), args);
-    crit.leave();
 }
 
 void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & job, const IException * exception, const char * prefix)
@@ -1297,7 +1279,6 @@ void LogMsgPrepender::report(const LogMsgCategory & cat, const LogMsgJobInfo & j
         reporter->report(cat, job, exception->errorCode(), "%s(%d) : %s", file, line, txt.str());
     else
         queryLogMsgManager()->report(cat, job, exception->errorCode(), "%s(%d) : %s", file, line, txt.str());
-    crit.leave();
 }
 
 IException * LogMsgPrepender::report(IException * e, const char * prefix, LogMsgClass cls)
@@ -2217,7 +2198,6 @@ HandleLogMsgHandlerTable * theStderrHandler;
 CLogMsgManager * theManager;
 CSysLogEventLogger * theSysLogEventLogger;
 LogMsgComponentReporter * theReporters[MSGCOMP_NUMBER];
-LogMsgPrepender * thePrepender;
 
 MODULE_INIT(INIT_PRIORITY_JLOG)
 {
@@ -2230,12 +2210,10 @@ MODULE_INIT(INIT_PRIORITY_JLOG)
     theManager->resetMonitors();
     for(unsigned compo = 0; compo<MSGCOMP_NUMBER; compo++)
         theReporters[compo] = new LogMsgComponentReporter(compo);
-    thePrepender = new LogMsgPrepender;
     return true;
 }
 MODULE_EXIT()
 {
-    delete thePrepender;
     for(unsigned compo = 0; compo<MSGCOMP_NUMBER; compo++)
         delete theReporters[compo];
     delete theManager;
@@ -2261,11 +2239,6 @@ LogMsgComponentReporter * queryLogMsgComponentReporter(unsigned compo)
     return theReporters[compo];
 }
 
-LogMsgPrepender * queryLogMsgPrepender()
-{
-    return thePrepender;
-}
-
 ILogMsgManager * createLogMsgManager() // use with care! (needed by mplog listener facility)
 {
     return new CLogMsgManager();

+ 3 - 7
system/jlib/jlog.hpp

@@ -600,9 +600,7 @@ private:
 class jlib_decl LogMsgPrepender
 {
 public:
-    // N.B. This method locks the critical section...
-    LogMsgPrepender * setContext(LogMsgComponentReporter * r, char const * f, unsigned l);
-    // ... and these ones unlock it. So they should be used in pairs.
+    LogMsgPrepender(LogMsgComponentReporter * r, char const * f, unsigned l) : reporter(r), file(f), line(l) { }
     void                      report(const LogMsgCategory & cat, const char * format, ...) __attribute__((format(printf, 3, 4)));
     void                      report_va(const LogMsgCategory & cat, const char * format, va_list args);
     void                      report(const LogMsgCategory & cat, LogMsgCode code, const char * format, ...) __attribute__((format(printf, 4, 5)));
@@ -618,7 +616,6 @@ private:
     LogMsgComponentReporter * reporter;
     char const *              file;
     unsigned                  line;
-    CriticalSection           crit;
 };
 
 // FUNCTIONS, DATA, AND MACROS
@@ -706,7 +703,6 @@ extern jlib_decl const LogMsgJobInfo unknownJob;
 extern jlib_decl ILogMsgManager * queryLogMsgManager();
 extern jlib_decl ILogMsgHandler * queryStderrLogMsgHandler();
 extern jlib_decl LogMsgComponentReporter * queryLogMsgComponentReporter(unsigned compo);
-extern jlib_decl LogMsgPrepender * queryLogMsgPrepender();
 
 extern jlib_decl ILogMsgManager * createLogMsgManager(); // use with care! (needed by mplog listener facility)
 
@@ -714,10 +710,10 @@ extern jlib_decl ILogMsgManager * createLogMsgManager(); // use with care! (need
 
 #ifdef LOGMSGCOMPONENT
 #define LOGMSGREPORTER queryLogMsgComponentReporter(LOGMSGCOMPONENT)
-#define FLLOG queryLogMsgPrepender()->setContext(LOGMSGREPORTER, __FILE__, __LINE__)->report
+#define FLLOG LogMsgPrepender(LOGMSGREPORTER, __FILE__, __LINE__).report
 #else // LOGMSGCOMPONENT
 #define LOGMSGREPORTER queryLogMsgManager()
-#define FLLOG queryLogMsgPrepender()->setContext(0, __FILE__, __LINE__)->report
+#define FLLOG LogMsgPrepender(NULL, __FILE__, __LINE__).report
 #endif // LOGMSGCOMPONENT
 
 #ifdef LOGMSGCOMPONENT