X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=HLT%2FBASE%2FAliHLTLogging.cxx;h=28f970e9c390683f083347c908d331dffaba35c2;hb=539ed16e4b89c5fd9a5a5d135aad0353aafa9488;hp=14d35d44df16776070e3f964711730a36b48c21a;hpb=9be2600f6614107c11a1d269dbac57242e5854f4;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/BASE/AliHLTLogging.cxx b/HLT/BASE/AliHLTLogging.cxx index 14d35d44df1..28f970e9c39 100644 --- a/HLT/BASE/AliHLTLogging.cxx +++ b/HLT/BASE/AliHLTLogging.cxx @@ -40,8 +40,7 @@ ClassImp(AliHLTLogging); AliHLTLogging::AliHLTLogging() : - //fLocalLogFilter(kHLTLogDefault), - fLocalLogFilter(kHLTLogAll), + fLocalLogFilter(fgLocalLogDefault), fpDefaultKeyword(NULL), fpCurrentKeyword(NULL) { @@ -71,10 +70,14 @@ AliHLTLogging& AliHLTLogging::operator=(const AliHLTLogging&) ostringstream AliHLTLogging::fgLogstr; AliHLTComponentLogSeverity AliHLTLogging::fgGlobalLogFilter=kHLTLogAll; +AliHLTComponentLogSeverity AliHLTLogging::fgLocalLogDefault=kHLTLogAll; AliHLTfctLogging AliHLTLogging::fgLoggingFunc=NULL; AliHLTLogging::AliHLTDynamicMessage AliHLTLogging::fgAliLoggingFunc=NULL; int AliHLTLogging::fgUseAliLog=1; +TString AliHLTLogging::fgBlackList=""; +TString AliHLTLogging::fgWhiteList=""; + AliHLTLogging::~AliHLTLogging() { // see header file for class documentation @@ -99,13 +102,22 @@ int AliHLTLogging::Init(AliHLTfctLogging pFun) int AliHLTLogging::InitAliLogTrap(AliHLTComponentHandler* pHandler) { // see header file for class documentation + // init the AliRoot logging trap + // AliLog messages are redirected to PubSub, int iResult=0; if (pHandler) { + // set temporary loglevel of component handler AliHLTComponentLogSeverity loglevel=pHandler->GetLocalLoggingLevel(); pHandler->SetLocalLoggingLevel(kHLTLogError); - pHandler->LoadLibrary("libAliHLTUtil.so"); + + // load library containing AliRoot dependencies and initialization handler + pHandler->LoadLibrary(ALILOG_WRAPPER_LIBRARY, 0/* do not activate agents */); + + // restore loglevel pHandler->SetLocalLoggingLevel(loglevel); - InitAliDynamicMessageCallback pFunc=(InitAliDynamicMessageCallback)pHandler->FindSymbol("libAliHLTUtil.so", "InitAliDynamicMessageCallback"); + + // find the symbol + InitAliDynamicMessageCallback pFunc=(InitAliDynamicMessageCallback)pHandler->FindSymbol(ALILOG_WRAPPER_LIBRARY, "InitAliDynamicMessageCallback"); if (pFunc) { iResult=(*pFunc)(); } else { @@ -120,6 +132,35 @@ int AliHLTLogging::InitAliLogTrap(AliHLTComponentHandler* pHandler) return iResult; } +int AliHLTLogging::InitAliLogFunc(AliHLTComponentHandler* pHandler) +{ + // see header file for class documentation + int iResult=0; + if (pHandler) { + // set temporary loglevel of component handler + AliHLTComponentLogSeverity loglevel=pHandler->GetLocalLoggingLevel(); + pHandler->SetLocalLoggingLevel(kHLTLogError); + + // load library containing AliRoot dependencies and initialization handler + pHandler->LoadLibrary(ALILOG_WRAPPER_LIBRARY, 0/* do not activate agents */); + + // restore loglevel + pHandler->SetLocalLoggingLevel(loglevel); + + // find the symbol + fgAliLoggingFunc=(AliHLTLogging::AliHLTDynamicMessage)pHandler->FindSymbol(ALILOG_WRAPPER_LIBRARY, "AliDynamicMessage"); + if (fgAliLoggingFunc==NULL) { + Message(NULL, kHLTLogError, "AliHLTLogging::InitAliLogFunc", "init logging", + "symbol lookp failure: can not find AliDynamicMessage, switching to HLT logging system"); + iResult=-ENOSYS; + } + } else { + iResult=-EINVAL; + } + + return iResult; +} + int AliHLTLogging::Message(void *param, AliHLTComponentLogSeverity severity, const char* origin, const char* keyword, const char* message) @@ -150,6 +191,9 @@ int AliHLTLogging::Message(void *param, AliHLTComponentLogSeverity severity, case kHLTLogFatal: strSeverity="fatal"; break; + case kHLTLogImportant: + strSeverity="notify"; + break; default: break; } @@ -197,7 +241,7 @@ int AliHLTLogging::AliMessage(AliHLTComponentLogSeverity severity, } #endif -const char* AliHLTLogging::BuildLogString(const char *format, va_list ap) +const char* AliHLTLogging::BuildLogString(const char *format, va_list ap, bool bAppend) { // see header file for class documentation @@ -212,13 +256,22 @@ const char* AliHLTLogging::BuildLogString(const char *format, va_list ap) const char* fmt = format; if (fmt==NULL) fmt=va_arg(ap, const char*); - fgAliHLTLoggingTarget[0]=0; + unsigned int iOffset=0; + if (bAppend) { + iOffset=strlen(fgAliHLTLoggingTarget.GetArray()); + } else { + fgAliHLTLoggingTarget[0]=0; + } while (fmt!=NULL) { - iResult=vsnprintf(fgAliHLTLoggingTarget.GetArray(), fgAliHLTLoggingTarget.GetSize(), fmt, ap); + iResult=vsnprintf(fgAliHLTLoggingTarget.GetArray()+iOffset, fgAliHLTLoggingTarget.GetSize()-iOffset, fmt, ap); if (iResult==-1) // for compatibility with older version of vsnprintf iResult=fgAliHLTLoggingTarget.GetSize()*2; - else if (iResult0) { - const char* separator=""; - TString origin; - if (originClass) { - origin+=originClass; - separator="::"; - } - if (originFunc) { - origin+=separator; - origin+=originFunc; - } - va_list args; - va_start(args, line); - if (fgLoggingFunc) { - iResult=(*fgLoggingFunc)(NULL/*fParam*/, severity, origin.Data(), GetKeyword(), AliHLTLogging::BuildLogString(NULL, args )); - } else { - if (fgUseAliLog!=0 && fgAliLoggingFunc!=NULL) - iResult=(*fgAliLoggingFunc)(severity, originClass, originFunc, file, line, AliHLTLogging::BuildLogString(NULL, args )); - else - iResult=Message(NULL/*fParam*/, severity, origin.Data(), GetKeyword(), AliHLTLogging::BuildLogString(NULL, args )); - } - va_end(args); + if (fgLoggingFunc) { + iResult=(*fgLoggingFunc)(NULL/*fParam*/, severity, origin.Data(), GetKeyword(), message); + } else { + if (fgUseAliLog!=0 && fgAliLoggingFunc!=NULL) + iResult=(*fgAliLoggingFunc)(severity, originClass, originFunc, file, line, message); + else + iResult=Message(NULL/*fParam*/, severity, origin.Data(), GetKeyword(), message); } return iResult; } @@ -312,7 +391,7 @@ int AliHLTLogging::CheckFilter(AliHLTComponentLogSeverity severity) const { // see header file for class documentation - int iResult=severity==kHLTLogNone || (severity&fgGlobalLogFilter)>0 && (severity&fLocalLogFilter)>0; + int iResult=severity==kHLTLogNone || ((severity&fgGlobalLogFilter)>0 && (severity&fLocalLogFilter)>0); return iResult; } @@ -344,3 +423,34 @@ AliHLTComponentLogSeverity AliHLTLogging::GetLocalLoggingLevel() return fLocalLogFilter; } + +void AliHLTLogging::SetLocalLoggingDefault(AliHLTComponentLogSeverity level) +{ + // see header file for class documentation + fgLocalLogDefault=level; +} + +int AliHLTLogging::CheckGroup(const char* /*originClass*/) const +{ + // see header file for class documentation + + return 1; +} + +int AliHLTLogging::SetBlackList(const char* classnames) +{ + // see header file for class documentation + + if (classnames) + fgBlackList=classnames; + return 0; +} + +int AliHLTLogging::SetWhiteList(const char* classnames) +{ + // see header file for class documentation + + if (classnames) + fgWhiteList=classnames; + return 0; +}