]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliLog.h
Record changes.
[u/mrichter/AliRoot.git] / STEER / AliLog.h
index aecf3a6e2bcc8633bfcdc0103a55b6986c1fd550..cecddb18a32aea72d47f5a0b745eb4942e5cbcdd 100644 (file)
@@ -20,10 +20,12 @@ class AliLog: public TObject {
   virtual ~AliLog();
   static AliLog* Instance() {return fgInstance;}
 
-  enum EType {kFatal = 0, kError, kWarning, kInfo, kDebug, kMaxType};
+  enum EType_t {kFatal = 0, kError, kWarning, kInfo, kDebug, kMaxType};
+  typedef void (*AliLogNotification)(EType_t type, const char* message );
+
 
   static void  EnableDebug(Bool_t enabled);
-  static void  SetGlobalLogLevel(EType type);
+  static void  SetGlobalLogLevel(EType_t type);
   static Int_t GetGlobalLogLevel();
   static void  SetGlobalDebugLevel(Int_t level);
   static Int_t GetGlobalDebugLevel();
@@ -33,23 +35,27 @@ class AliLog: public TObject {
   static void  ClearClassDebugLevel(const char* className);
 
   static void  SetStandardOutput();
-  static void  SetStandardOutput(EType type);
+  static void  SetStandardOutput(EType_t type);
   static void  SetErrorOutput();
-  static void  SetErrorOutput(EType type);
+  static void  SetErrorOutput(EType_t type);
   static void  SetFileOutput(const char* fileName);
-  static void  SetFileOutput(EType type, const char* fileName);
+  static void  SetFileOutput(EType_t type, const char* fileName);
+  static void  SetStreamOutput(ostream* stream);
+  static void  SetStreamOutput(EType_t type, ostream* stream);
+  static void  SetLogNotification(AliLogNotification pCallBack);
+  static void  SetLogNotification(EType_t type, AliLogNotification pCallBack);
   static void  Flush();
 
   static void  SetHandleRootMessages(Bool_t on);
 
   static void  SetPrintType(Bool_t on);
-  static void  SetPrintType(EType type, Bool_t on);
+  static void  SetPrintType(EType_t type, Bool_t on);
   static void  SetPrintModule(Bool_t on);
-  static void  SetPrintModule(EType type, Bool_t on);
+  static void  SetPrintModule(EType_t type, Bool_t on);
   static void  SetPrintScope(Bool_t on);
-  static void  SetPrintScope(EType type, Bool_t on);
+  static void  SetPrintScope(EType_t type, Bool_t on);
   static void  SetPrintLocation(Bool_t on);
-  static void  SetPrintLocation(EType type, Bool_t on);
+  static void  SetPrintLocation(EType_t type, Bool_t on);
 
   static void  SetPrintRepetitions(Bool_t on);
 
@@ -66,16 +72,16 @@ class AliLog: public TObject {
                      const char* module, const char* className,
                      const char* function, const char* file, Int_t line);
 
-  static Int_t RedirectStdoutTo(EType type, UInt_t level, const char* module, 
+  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 RedirectStderrTo(EType type, UInt_t level, const char* module, 
+  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);
   static void  RestoreStdout(Int_t original);
   static void  RestoreStderr(Int_t original);
 
-  static ostream& Stream(EType type, UInt_t level,
+  static ostream& Stream(EType_t type, UInt_t level,
                          const char* module, const char* className,
                          const char* function, const char* file, Int_t line);
 
@@ -96,14 +102,16 @@ class AliLog: public TObject {
                               const char* module, const char* className,
                               const char* function, 
                               const char* file, Int_t line);
+
+  void           PrintString(Int_t type, FILE* stream, const char* format, ...);
   void           PrintRepetitions();
 
-  Int_t          RedirectTo(FILE* stream, EType type, UInt_t level,
+  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);
 
-  ostream&       GetStream(EType type, UInt_t level,
+  ostream&       GetStream(EType_t type, UInt_t level,
                            const char* module, const char* className,
                            const char* function, const char* file, Int_t line);
 
@@ -120,7 +128,7 @@ class AliLog: public TObject {
   Int_t          fOutputTypes[kMaxType];     // types of output streams
   TString        fFileNames[kMaxType];       // file names
   FILE*          fOutputFiles[kMaxType];     //! log output files
-  ofstream*      fOutputStreams[kMaxType];   //! log output streams
+  ostream*       fOutputStreams[kMaxType];   //! log output streams
 
   Bool_t         fPrintType[kMaxType];       // print type on/off
   Bool_t         fPrintModule[kMaxType];     // print module on/off
@@ -137,14 +145,15 @@ class AliLog: public TObject {
   TString        fLastFunction;              //! function name of last message
   TString        fLastFile;                  //! file name of last message
   Int_t          fLastLine;                  //! line number of last message
+  AliLogNotification fCallBacks[kMaxType];   //! external notification callback
 
   ClassDef(AliLog, 1)   // class for logging debug, info and error messages
 };
 
 
 // module name
-#ifdef __MODULE__
-#define MODULENAME() __MODULE__
+#ifdef _MODULE_
+#define MODULENAME() _MODULE_
 #else
 #define MODULENAME() "NoModule"
 #endif