GSI Object Oriented Online Offline (Go4)  GO4-6.1.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TGo4Log.h
Go to the documentation of this file.
1 // $Id: TGo4Log.h 2856 2020-05-18 14:01:46Z linev $
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef TGO4LOG_H
15 #define TGO4LOG_H
16 
17 #include "TString.h"
18 #include "RVersion.h"
19 
20 class TMutex;
21 class TLogTimer;
22 
23 #define __MESSAGETEXTLENGTH__ 1024
24 
25 // define previous trace macro void
26 #define GO4TRACE(X) ;
27 
28 #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
29 // one need to remove TRACE macro when using ROOT v 6
30 #define TRACE(X) ;
31 #endif
32 
33 // optional definitions
34 #define GO4MESSAGE( X ) TGo4Log::Message X;
35 #define GO4INFO(X) TGo4Log::Info X ;
36 #define GO4WARN(X) TGo4Log::Warn X ;
37 #define GO4ERROR(X) TGo4Log::Error X ;
38 
47 class TGo4Log {
48 
49  public:
50  static TGo4Log *Instance();
51 
55  static const char* GO4SYS();
56 
58  static const char* GO4INCPATH();
59 
62  static TString subGO4SYS(const char* subdir);
63 
65  static void SetIgnoreLevel(Int_t level);
66 
68  static Int_t GetIgnoreLevel();
69 
71  static void OutputEnable(Bool_t on=kTRUE);
72 
74  static Bool_t IsOutputEnabled();
75 
77  static void LogfileEnable(Bool_t on=kTRUE);
78 
80  static Bool_t IsLogfileEnabled();
81 
83  static void AutoEnable(Bool_t on=kTRUE);
84 
86  static Bool_t IsAutoEnabled();
87 
92  static void OpenLogfile(const char* name=0,
93  const char* headercomment=0,
94  Bool_t appendmode=kFALSE);
95 
97  static void CloseLogfile();
98 
100  static const char* GetLogname();
101 
108  static const char* Message(Int_t prio, const char* text,...);
109 
111  static void Debug(const char* text,...);
112 
114  static void Info(const char* text,...);
115 
117  static void Warn(const char* text,...);
118 
120  static void Error(const char* text,...);
121 
123  static void Printf(Bool_t _stdout, const char* text);
124 
127  static void WriteLogfile(const char* text, Bool_t withtime=kTRUE);
128 
130  static void set_trace_level(int) {}
131 
133  static void SetTracePriority(int) {}
134 
136  static void StartTracing() { Instance(); SetIgnoreLevel(0); }
137 
139  static void StopTracing() { Instance(); SetIgnoreLevel(1); }
140 
142  static const char* GetDefaultLogname();
143 
146  static const char* GetPrintfArg(Int_t type_id);
147 
149  static const char* fgcLEFT;
150 
152  static const char* fgcRIGHT;
153 
155  static const char* fgcDEBUG;
156 
158  static const char* fgcINFO;
159 
161  static const char* fgcWARN;
162 
164  static const char* fgcERR;
165 
167  static const char* fgcDEFAULTLOG;
168 
171 
172  virtual ~TGo4Log();
173 
174  static void SetSniffer(TNamed* sniff);
175 
176  static void EnableRedirection();
177 
178  private:
179 
180  friend class TLogTimer;
181 
182  TGo4Log();
183 
184  static void ProcessRedirection(int kind = 0);
185 
187 
189  static TMutex* fgxMutex;
190 
192  static Int_t fgiIgnoreLevel;
193 
195  static Bool_t fgbOutputEnabled;
196 
198  static Bool_t fgbLogfileEnabled;
199 
201  static Bool_t fgbAutoMode;
202 
205 
207  static void* fgxLogfile;
208 
210  static TString fgxLogName;
211 
212  static TString fgsGO4SYS;
213 
214  static TNamed* fgSniffer;
215 
216  static int fgStdPipe[2];
217  static int fgStdSave;
218 
219  static TLogTimer* fgTimer;
220 
221  ClassDef(TGo4Log,1)
222 };
223 
224 /* for backward compatibility in user code: */
226 
227 #endif //TGO4LOG_H
static const char * GetLogname()
Definition: TGo4Log.cxx:337
static TGo4Log * Instance()
Definition: TGo4Log.cxx:87
static TGo4Log * fgxInstance
Definition: TGo4Log.h:186
static const char * fgcWARN
Definition: TGo4Log.h:161
static void WriteLogfile(const char *text, Bool_t withtime=kTRUE)
Definition: TGo4Log.cxx:432
static void CloseLogfile()
Definition: TGo4Log.cxx:456
static Bool_t IsOutputEnabled()
Definition: TGo4Log.cxx:368
static void Warn(const char *text,...)
Definition: TGo4Log.cxx:300
static const char * GetPrintfArg(Int_t type_id)
Definition: TGo4Log.cxx:347
static Bool_t fgbLogfileEnabled
Definition: TGo4Log.h:198
static const char * GetDefaultLogname()
Definition: TGo4Log.cxx:342
static Bool_t fgbAutoMode
Definition: TGo4Log.h:201
static void SetIgnoreLevel(Int_t level)
Definition: TGo4Log.cxx:326
static void OutputEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:362
static const char * fgcRIGHT
Definition: TGo4Log.h:152
static void OpenLogfile(const char *name=0, const char *headercomment=0, Bool_t appendmode=kFALSE)
Definition: TGo4Log.cxx:395
static const char * fgcDEBUG
Definition: TGo4Log.h:155
static Bool_t fgbOutputEnabled
Definition: TGo4Log.h:195
static TString fgsGO4SYS
Definition: TGo4Log.h:212
static int fgStdSave
redirected pipe for stdout
Definition: TGo4Log.h:217
static void ProcessRedirection(int kind=0)
Definition: TGo4Log.cxx:120
virtual ~TGo4Log()
Definition: TGo4Log.cxx:82
static void SetSniffer(TNamed *sniff)
Definition: TGo4Log.cxx:153
static const char * fgcINFO
Definition: TGo4Log.h:158
TGo4Log()
Definition: TGo4Log.cxx:69
static const char * GO4INCPATH()
Definition: TGo4Log.cxx:181
static void EnableRedirection()
Definition: TGo4Log.cxx:95
static int fgStdPipe[2]
optional object to get all output via SetTitle method
Definition: TGo4Log.h:216
static Bool_t IsLogfileEnabled()
Definition: TGo4Log.cxx:379
static const char * fgcDEFAULTLOG
Definition: TGo4Log.h:167
static void StopTracing()
Definition: TGo4Log.h:139
static const char * Message(Int_t prio, const char *text,...)
Definition: TGo4Log.cxx:209
static Int_t fgiIgnoreLevel
Definition: TGo4Log.h:192
static TString fgxLogName
Definition: TGo4Log.h:210
static void Printf(Bool_t _stdout, const char *text)
Definition: TGo4Log.cxx:259
static TMutex * fgxMutex
Definition: TGo4Log.h:189
static void * fgxLogfile
Definition: TGo4Log.h:207
static void set_trace_level(int)
Definition: TGo4Log.h:130
static Int_t GetIgnoreLevel()
Definition: TGo4Log.cxx:332
static TNamed * fgSniffer
value of GO4SYS during run
Definition: TGo4Log.h:214
static void StartTracing()
Definition: TGo4Log.h:136
static TString subGO4SYS(const char *subdir)
Definition: TGo4Log.cxx:192
static char fgcMessagetext[__MESSAGETEXTLENGTH__]
Definition: TGo4Log.h:204
static const char * fgcLEFT
Definition: TGo4Log.h:149
static const char * GO4SYS()
Definition: TGo4Log.cxx:158
static TLogTimer * fgTimer
saved file for stdout
Definition: TGo4Log.h:219
static void AutoEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:384
#define __MESSAGETEXTLENGTH__
Definition: TGo4Log.h:23
static const char * fgcERR
Definition: TGo4Log.h:164
TGo4Log TGo4Trace
Definition: TGo4Log.h:225
static void SetTracePriority(int)
Definition: TGo4Log.h:133
static void Error(const char *text,...)
Definition: TGo4Log.cxx:313
static Bool_t IsAutoEnabled()
Definition: TGo4Log.cxx:390
static void Info(const char *text,...)
Definition: TGo4Log.cxx:287
static void Debug(const char *text,...)
Definition: TGo4Log.cxx:274
static void LogfileEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:373