16 #if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) 17 # define ALIROOT_DEPRECATED(func) func __attribute__ ((deprecated)) 18 #elif defined(_MSC_VER) && _MSC_VER >= 1300 19 # define ALIROOT_DEPRECATED(func) __declspec(deprecated) func 21 # define ALIROOT_DEPRECATED(func) func 87 static void WriteToFile(
const char* name, Int_t option = 0);
92 static Int_t
GetDebugLevel(
const char* module,
const char* className);
93 static void Message(UInt_t level,
const char* message,
94 const char* module,
const char* className,
95 const char*
function,
const char* file, Int_t line);
96 static void Debug(UInt_t level,
const char* message,
97 const char* module,
const char* className,
98 const char*
function,
const char* file, Int_t line);
101 const char* className,
const char*
function,
102 const char* file, Int_t line, Bool_t print);
104 const char* className,
const char*
function,
105 const char* file, Int_t line, Bool_t print);
110 const char* module,
const char* className,
111 const char*
function,
const char* file, Int_t line);
126 const char* location,
const char* message);
131 UInt_t
GetLogLevel(
const char* module,
const char* className)
const;
133 const char* module,
const char* className,
134 const char*
function,
135 const char* file, Int_t line);
137 void PrintString(Int_t type, FILE* stream,
const char* format, ...);
141 const char* module,
const char* className,
142 const char*
function,
143 const char* file, Int_t line, Bool_t print);
146 const char* module,
const char* className,
147 const char*
function,
const char* file, Int_t line);
187 # define MODULENAME() _MODULE_ 189 # define MODULENAME() "NoModule" 193 #if defined(__GNUC__) || defined(__ICC) || defined(__ECC) || defined(__APPLE__) 194 # define FUNCTIONNAME() __FUNCTION__ 198 # define FUNCTIONNAME() "???" 210 #define REDIRECTSTDOUT(type, level, scope, whatever) \ 211 do {Int_t originalStdout = AliLog::RedirectStdoutTo(type, level, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__, kFALSE); \ 212 whatever; AliLog::RestoreStdout(originalStdout);} while(false) 221 #define REDIRECTSTDERR(type, level, scope, whatever) \ 222 do {Int_t originalStderr = AliLog::RedirectStderrTo(type, level, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__, kFALSE); \ 223 whatever; AliLog::RestoreStderr(originalStderr);} while(false) 232 #define REDIRECTSTDOUTANDSTDERR(type, level, scope, whatever) \ 233 do {Int_t originalStdout = AliLog::RedirectStdoutTo(type, level, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__, kFALSE); \ 234 Int_t originalStderr = AliLog::RedirectStderrTo(type, level, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__, kFALSE); \ 235 whatever; AliLog::RestoreStderr(originalStderr); AliLog::RestoreStdout(originalStdout);} while(false) 240 # define AliDebugLevel() -1 241 # define AliDebugLevelClass() -1 242 # define AliDebugLevelGeneral(scope) -1 247 # define AliDebugLevel() ((AliLog::IsDebugEnabled()) ? AliLog::GetDebugLevel(MODULENAME(), ClassName()) : -1) 251 # define AliDebugLevelClass() ((AliLog::IsDebugEnabled()) ? AliLog::GetDebugLevel(MODULENAME(), Class()->GetName()) : -1) 256 # define AliDebugLevelGeneral(scope) ((AliLog::IsDebugEnabled()) ? AliLog::GetDebugLevel(MODULENAME(), scope) : -1) 261 # define AliDebug(level, message) do { } while (false) 262 # define AliDebugClass(level, message) do { } while (false) 263 # define AliDebugGeneral(scope, level, message) do { } while (false) 264 # define AliDebugF(level, message,...) do { } while (false) 265 # define AliDebugClassF(level, message,...) do { } while (false) 266 # define AliDebugGeneralF(scope, level, message,...) do { } while (false) 271 # if !defined(ALIROOT_UNLIKELY) 272 # if defined(__GNUC__) && (__GNUC__ >= 3) 279 # define ALIROOT_UNLIKELY(expr) __builtin_expect(expr, 0) 287 # define ALIROOT_UNLIKELY(expr) expr 300 # define AliDebug(logLevel, message) \ 301 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), ClassName()) >= logLevel)) {\ 302 AliLog::Debug(logLevel, message, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 313 # define AliDebugClass(logLevel, message) \ 314 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), Class()->GetName()) >= logLevel)) {\ 315 AliLog::Debug(logLevel, message, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 327 # define AliDebugGeneral(scope, logLevel, message) \ 328 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), scope) >= logLevel)) {\ 329 AliLog::Debug(logLevel, message, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 338 # define AliDebugF(logLevel,format,...) \ 339 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), ClassName()) >= logLevel)) { \ 340 TString m;m.Form(format,__VA_ARGS__); \ 341 AliLog::Debug(logLevel, m, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 353 # define AliDebugClassF(logLevel,format,...) \ 354 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), Class()->GetName()) >= logLevel)) { \ 355 TString m;m.Form(format,__VA_ARGS__); \ 356 AliLog::Debug(logLevel, m, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 369 # define AliDebugGeneralF(scope,logLevel,format,...) \ 370 do { if (ALIROOT_UNLIKELY(AliLog::IsDebugEnabled() && AliLog::GetDebugLevel(MODULENAME(), scope) >= logLevel)) { \ 371 TString m;m.Form(format,__VA_ARGS__); \ 372 AliLog::Debug(logLevel, m, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__); }} while (0) 377 #define StdoutToAliDebug(level, whatever) REDIRECTSTDOUT(AliLog::kDebug, level, ClassName(), whatever) 378 #define StderrToAliDebug(level, whatever) REDIRECTSTDERR(AliLog::kDebug, level, ClassName(), whatever) 379 #define ToAliDebug(level, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kDebug, level, ClassName(), whatever) 380 #define StdoutToAliDebugClass(level, whatever) REDIRECTSTDOUT(AliLog::kDebug, level, Class()->GetName(), whatever) 381 #define StderrToAliDebugClass(level, whatever) REDIRECTSTDERR(AliLog::kDebug, level, Class()->GetName(), whatever) 382 #define ToAliDebugClass(level, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kDebug, level, Class()->GetName(), whatever) 383 #define StdoutToAliDebugGeneral(scope, level, whatever) REDIRECTSTDOUT(AliLog::kDebug, level, scope, whatever) 384 #define StderrToAliDebugGeneral(scope, level, whatever) REDIRECTSTDERR(AliLog::kDebug, level, scope, whatever) 385 #define ToAliDebugGeneral(scope, level, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kDebug, level, scope, whatever) 388 #define AliDebugStream(level) AliLog::Stream(AliLog::kDebug, level, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__) 389 #define AliDebugClassStream(level) AliLog::Stream(AliLog::kDebug, level, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__) 390 #define AliDebugGeneralStream(scope, level) AliLog::Stream(AliLog::kDebug, level, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__) 399 #define AliMessage(lvl,message) do { \ 400 AliLog::Message(lvl, message, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 408 #define AliMessageClass(lvl,message) do { \ 409 AliLog::Message(lvl, message, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 418 #define AliMessageGeneral(scope,lvl,message) do { \ 419 AliLog::Message(lvl, message, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 432 #define AliMessageF(lvl,format,...) do { \ 433 TString m; m.Form(format,__VA_ARGS__); \ 434 AliLog::Message(lvl, m, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 449 #define AliMessageClassF(lvl,format,...) do { \ 450 TString m; m.Form(format,__VA_ARGS__); \ 451 AliLog::Message(lvl, m, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 467 #define AliMessageGeneralF(scope,lvl,format,...) do { \ 468 TString m; m.Form(format,__VA_ARGS__); \ 469 AliLog::Message(lvl, m, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__);} while(false) 473 # define AliInfo(message) do { } while (false) 474 # define AliInfoClass(message) do { } while (false) 475 # define AliInfoGeneral(scope, message) do { } while (false) 476 # define AliInfoF(message,...) do { } while (false) 477 # define AliInfoClassF(message,...) do { } while (false) 478 # define AliInfoGeneralF(scope, message,...) do { } while (false) 484 # define AliInfo(message) AliMessage(AliLog::kInfo, message) 489 # define AliInfoClass(message) AliMessageClass(AliLog::kInfo, message) 494 # define AliInfoGeneral(scope, message) AliMessageGeneral(scope, AliLog::kInfo, message) 499 # define AliInfoF(message,...) AliMessageF(AliLog::kInfo, message, __VA_ARGS__) 504 # define AliInfoClassF(message,...) AliMessageClassF(AliLog::kInfo, message, __VA_ARGS__) 509 # define AliInfoGeneralF(scope,message,...) AliMessageGeneralF(scope, AliLog::kInfo, message, __VA_ARGS__) 513 #define StdoutToAliInfo(whatever) REDIRECTSTDOUT(AliLog::kInfo, 0, ClassName(), whatever) 514 #define StderrToAliInfo(whatever) REDIRECTSTDERR(AliLog::kInfo, 0, ClassName(), whatever) 515 #define ToAliInfo(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kInfo, 0, ClassName(), whatever) 516 #define StdoutToAliInfoClass(whatever) REDIRECTSTDOUT(AliLog::kInfo, 0, Class()->GetName(), whatever) 517 #define StderrToAliInfoClass(whatever) REDIRECTSTDERR(AliLog::kInfo, 0, Class()->GetName(), whatever) 518 #define ToAliInfoClass(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kInfo, 0, Class()->GetName(), whatever) 519 #define StdoutToAliInfoGeneral(scope, whatever) REDIRECTSTDOUT(AliLog::kInfo, 0, scope, whatever) 520 #define StderrToAliInfoGeneral(scope, whatever) REDIRECTSTDERR(AliLog::kInfo, 0, scope, whatever) 521 #define ToAliInfoGeneral(scope, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kInfo, 0, scope, whatever) 524 #define AliInfoStream() AliLog::Stream(AliLog::kInfo, 0, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__) 525 #define AliInfoClassStream() AliLog::Stream(AliLog::kInfo, 0, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__) 526 #define AliInfoGeneralStream(scope) AliLog::Stream(AliLog::kInfo, 0, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__) 529 #ifdef LOG_NO_WARNING 530 # define AliWarning(message) do { } while (false) 531 # define AliWarningClass(message) do { } while (false) 532 # define AliWarningGeneral(scope, message) do { } while (false) 533 # define AliWarningF(message,...) do { } while (false) 534 # define AliWarningClassF(message,...) do { } while (false) 535 # define AliWarningGeneralF(scope, message,...) do { } while (false) 541 # define AliWarning(message) AliMessage(AliLog::kWarning, message) 546 # define AliWarningClass(message) AliMessageClass(AliLog::kWarning, message) 551 # define AliWarningGeneral(scope, message) AliMessageGeneral(scope, AliLog::kWarning, message) 556 # define AliWarningF(message,...) AliMessageF(AliLog::kWarning, message, __VA_ARGS__) 561 # define AliWarningClassF(message,...) AliMessageClassF(AliLog::kWarning, message, __VA_ARGS__) 566 # define AliWarningGeneralF(scope,message,...) AliMessageGeneralF(scope, AliLog::kWarning, message, __VA_ARGS__) 570 #define StdoutToAliWarning(whatever) REDIRECTSTDOUT(AliLog::kWarning, 0, ClassName(), whatever) 571 #define StderrToAliWarning(whatever) REDIRECTSTDERR(AliLog::kWarning, 0, ClassName(), whatever) 572 #define ToAliWarning(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kWarning, 0, ClassName(), whatever) 573 #define StdoutToAliWarningClass(whatever) REDIRECTSTDOUT(AliLog::kWarning, 0, Class()->GetName(), whatever) 574 #define StderrToAliWarningClass(whatever) REDIRECTSTDERR(AliLog::kWarning, 0, Class()->GetName(), whatever) 575 #define ToAliWarningClass(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kWarning, 0, Class()->GetName(), whatever) 576 #define StdoutToAliWarningGeneral(scope, whatever) REDIRECTSTDOUT(AliLog::kWarning, 0, scope, whatever) 577 #define StderrToAliWarningGeneral(scope, whatever) REDIRECTSTDERR(AliLog::kWarning, 0, scope, whatever) 578 #define ToAliWarningGeneral(scope, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kWarning, 0, scope, whatever) 581 #define AliWarningStream() AliLog::Stream(AliLog::kWarning, 0, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__) 582 #define AliWarningClassStream() AliLog::Stream(AliLog::kWarning, 0, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__) 583 #define AliWarningGeneralStream(scope) AliLog::Stream(AliLog::kWarning, 0, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__) 591 #define AliError(message) AliMessage(AliLog::kError, message) 596 #define AliErrorClass(message) AliMessageClass(AliLog::kError, message) 601 #define AliErrorGeneral(scope, message) AliMessageGeneral(scope, AliLog::kError, message) 606 #define AliErrorF(message,...) AliMessageF(AliLog::kError, message, __VA_ARGS__) 611 #define AliErrorClassF(message,...) AliMessageClassF(AliLog::kError, message, __VA_ARGS__) 616 #define AliErrorGeneralF(scope,message,...) AliMessageGeneralF(scope, AliLog::kError, message, __VA_ARGS__) 619 #define StdoutToAliError(whatever) REDIRECTSTDOUT(AliLog::kError, 0, ClassName(), whatever) 620 #define StderrToAliError(whatever) REDIRECTSTDERR(AliLog::kError, 0, ClassName(), whatever) 621 #define ToAliError(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kError, 0, ClassName(), whatever) 622 #define StdoutToAliErrorClass(whatever) REDIRECTSTDOUT(AliLog::kError, 0, Class()->GetName(), whatever) 623 #define StderrToAliErrorClass(whatever) REDIRECTSTDERR(AliLog::kError, 0, Class()->GetName(), whatever) 624 #define ToAliErrorClass(whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kError, 0, Class()->GetName(), whatever) 625 #define StdoutToAliErrorGeneral(scope, whatever) REDIRECTSTDOUT(AliLog::kError, 0, scope, whatever) 626 #define StderrToAliErrorGeneral(scope, whatever) REDIRECTSTDERR(AliLog::kError, 0, scope, whatever) 627 #define ToAliErrorGeneral(scope, whatever) REDIRECTSTDOUTANDSTDERR(AliLog::kError, 0, scope, whatever) 630 #define AliErrorStream() AliLog::Stream(AliLog::kError, 0, MODULENAME(), ClassName(), FUNCTIONNAME(), __FILE__, __LINE__) 631 #define AliErrorClassStream() AliLog::Stream(AliLog::kError, 0, MODULENAME(), Class()->GetName(), FUNCTIONNAME(), __FILE__, __LINE__) 632 #define AliErrorGeneralStream(scope) AliLog::Stream(AliLog::kError, 0, MODULENAME(), scope, FUNCTIONNAME(), __FILE__, __LINE__) 640 #define AliFatal(message) AliMessage(AliLog::kFatal, message) 645 #define AliFatalClass(message) AliMessageClass(AliLog::kFatal, message) 650 #define AliFatalGeneral(scope, message) AliMessageGeneral(scope, AliLog::kFatal, message) 655 #define AliFatalF(message,...) AliMessageF(AliLog::kFatal, message, __VA_ARGS__) 660 #define AliFatalClassF(message,...) AliMessageClassF(AliLog::kFatal, message, __VA_ARGS__) 665 #define AliFatalGeneralF(scope,message,...) AliMessageGeneralF(scope, AliLog::kFatal, message, __VA_ARGS__) AliLogNotification fCallBacks[kMaxType]
line number of last message
TString fLastMessage
type of last message
static void ClearModuleDebugLevel(const char *module)
FILE * fOutputFiles[kMaxType]
void(* AliLogNotification)(EType_t type, const char *message)
void PrintString(Int_t type, FILE *stream, const char *format,...)
static void MakeCoreDump(const char *fout)
static void SetGlobalLogLevel(EType_t type)
TObjArray fClassDebugLevels
static void SetClassDebugLevel(const char *className, Int_t level)
static void RestoreStdout(Int_t original)
FILE * GetOutputStream(Int_t type)
static void RootErrorHandler(Int_t level, Bool_t abort, const char *location, const char *message)
Bool_t fPrintLocation[kMaxType]
static void Message(UInt_t level, const char *message, const char *module, const char *className, const char *function, const char *file, Int_t line)
static void SetFileOutput(const char *fileName)
Int_t fOutputTypes[kMaxType]
static void SetStreamOutput(ostream *stream)
static Bool_t fgDebugEnabled
pointer to current instance
static void SetHandleRootMessages(Bool_t on)
TString fLastFunction
class name of last message
static AliLog * GetRootLogger()
UInt_t fLastType
counter of repetitions
TString fileName(const char *dir, int runNumber, const char *da, int i, const char *type)
static Bool_t fgCoreEnabled
ostream & GetStream(EType_t type, UInt_t level, const char *module, const char *className, const char *function, const char *file, Int_t line)
static void TestException(Int_t level=10)
static ostream & Stream(EType_t type, UInt_t level, const char *module, const char *className, const char *function, const char *file, Int_t line)
static AliLog * fgInstance
static void SetLogNotification(AliLogNotification pCallBack)
static Int_t GetGlobalDebugLevel()
static void WriteToFile(const char *name, Int_t option=0)
AliLog & operator=(const AliLog &log)
static Int_t RedirectStderrTo(EType_t type, UInt_t level, const char *module, const char *className, const char *function, const char *file, Int_t line, Bool_t print)
Bool_t fPrintType[kMaxType]
log output streams
TString fLastFile
function name of last message
Bool_t fPrintModule[kMaxType]
static void SetModuleDebugLevel(const char *module, Int_t level)
static void SetPrintModule(Bool_t on)
static void SetPrintType(Bool_t on)
static void EnableDebug(Bool_t enabled)
static Bool_t IsDebugEnabled()
TString fLastModule
last message
static void SetGlobalDebugLevel(Int_t level)
static void Debug(UInt_t level, const char *message, const char *module, const char *className, const char *function, const char *file, Int_t line)
TString fLastClassName
module name of last message
static void SetPrintRepetitions(Bool_t on)
static void SetPrintScope(Bool_t on)
static Int_t RedirectStdoutTo(EType_t type, UInt_t level, const char *module, const char *className, const char *function, const char *file, Int_t line, Bool_t print)
static Int_t GetDebugLevel(const char *module, const char *className)
void PrintMessage(UInt_t type, const char *message, const char *module, const char *className, const char *function, const char *file, Int_t line)
Int_t fLastLine
file name of last message
ostream * fOutputStreams[kMaxType]
log output files
static void ClearClassDebugLevel(const char *className)
Int_t RedirectTo(FILE *stream, EType_t type, UInt_t level, const char *module, const char *className, const char *function, const char *file, Int_t line, Bool_t print)
static Int_t GetGlobalLogLevel()
UInt_t GetLogLevel(const char *module, const char *className) const
TString fFileNames[kMaxType]
static void SetStandardOutput()
static void SetPrintLocation(Bool_t on)
void CloseFile(Int_t type)
static void DeleteRootLogger()
static void EnableCoreDump(Bool_t enabled)
static void RestoreStderr(Int_t original)
static void SetErrorOutput()
Bool_t fPrintScope[kMaxType]
TObjArray fModuleDebugLevels