AliHLTLogging::AliHLTLogging()
:
- //fLocalLogFilter(kHLTLogDefault),
- fLocalLogFilter(kHLTLogAll),
+ fLocalLogFilter(fgLocalLogDefault),
fpDefaultKeyword(NULL),
fpCurrentKeyword(NULL)
{
ostringstream AliHLTLogging::fgLogstr;
AliHLTComponentLogSeverity AliHLTLogging::fgGlobalLogFilter=kHLTLogAll;
+AliHLTComponentLogSeverity AliHLTLogging::fgLocalLogDefault=kHLTLogAll;
AliHLTfctLogging AliHLTLogging::fgLoggingFunc=NULL;
AliHLTLogging::AliHLTDynamicMessage AliHLTLogging::fgAliLoggingFunc=NULL;
int AliHLTLogging::fgUseAliLog=1;
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");
+ "symbol lookup failure: can not find AliDynamicMessage, switching to HLT logging system");
iResult=-ENOSYS;
}
} else {
case kHLTLogFatal:
strSeverity="fatal";
break;
+ case kHLTLogImportant:
+ strSeverity="notify";
+ break;
default:
break;
}
}
#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
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 (iResult<fgAliHLTLoggingTarget.GetSize())
+ else
+ iResult+=iOffset;
+
+ if (iResult<fgAliHLTLoggingTarget.GetSize())
+ // everything in the limit
break;
// terminate if buffer is already at the limit
return fgAliHLTLoggingTarget.GetArray();
}
+const char* AliHLTLogging::SetLogString(const void* p, const char* pfmt, const char *format, ...)
+{
+ // see header file for class documentation
+ if (!p || !pfmt) return NULL;
+ TString formatstr=format;
+ TString pstr;
+#ifdef __DEBUG
+ pstr.Form(pfmt, p);
+#endif
+ formatstr.ReplaceAll("_pfmt_", pstr);
+ va_list args;
+ va_start(args, format);
+
+ const char* message=BuildLogString(formatstr.Data(), args);
+ va_end(args);
+
+ return message;
+}
+
int AliHLTLogging::Logging(AliHLTComponentLogSeverity severity,
const char* origin, const char* keyword,
const char* format, ... )
const char* file, int line, ... ) const
{
// see header file for class documentation
+ int iResult=0;
- if (file==NULL && line==0) {
- // this is currently just to get rid of the warning "unused parameter"
+ va_list args;
+ va_start(args, line);
+
+ iResult=SendMessage(severity, originClass, originFunc, file, line, AliHLTLogging::BuildLogString(NULL, args ));
+ va_end(args);
+
+ return iResult;
+}
+
+int AliHLTLogging::SendMessage(AliHLTComponentLogSeverity severity,
+ const char* originClass, const char* originFunc,
+ const char* file, int line,
+ const char* message) const
+{
+ // see header file for class documentation
+ int iResult=0;
+ const char* separator="";
+ TString origin;
+ if (originClass) {
+ origin+=originClass;
+ separator="::";
+ }
+ if (originFunc) {
+ origin+=separator;
+ origin+=originFunc;
}
- int iResult=1; //CheckFilter(severity); // check moved to makro
- if (iResult>0) {
- 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;
}
{
// 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;
}
return fLocalLogFilter;
}
-int AliHLTLogging::CheckGroup(const char* originClass) const
+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