GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
TGo4Log.h
Go to the documentation of this file.
1 // $Id$
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 
19 class TMutex;
20 class TLogTimer;
21 
22 #define __MESSAGETEXTLENGTH__ 1024
23 
24 // define previous trace macro void
25 #define GO4TRACE(X) ;
26 
27 // optional definitions
28 #define GO4MESSAGE( X ) TGo4Log::Message X;
29 #define GO4INFO(X) TGo4Log::Info X ;
30 #define GO4WARN(X) TGo4Log::Warn X ;
31 #define GO4ERROR(X) TGo4Log::Error X ;
32 
33 #if defined(__GNUC__) && !defined(__CINT__)
34 #define GO4_PRINTF_ARGS __attribute__((format(printf, 1, 2)))
35 #define GO4_PRINTF2_ARGS __attribute__((format(printf, 2, 3)))
36 #else
37 #define GO4_PRINTF_ARGS
38 #define GO4_PRINTF2_ARGS
39 #endif
40 
41 
50 class TGo4Log {
51 
52  public:
53  static TGo4Log *Instance();
54 
58  static const char *GO4SYS();
59 
61  static const char *GO4INCPATH();
62 
65  static TString subGO4SYS(const char *subdir);
66 
68  static void SetIgnoreLevel(Int_t level);
69 
71  static Int_t GetIgnoreLevel();
72 
74  static void OutputEnable(Bool_t on=kTRUE);
75 
77  static Bool_t IsOutputEnabled();
78 
80  static void LogfileEnable(Bool_t on=kTRUE);
81 
83  static Bool_t IsLogfileEnabled();
84 
86  static void AutoEnable(Bool_t on=kTRUE);
87 
89  static Bool_t IsAutoEnabled();
90 
95  static void OpenLogfile(const char *name = nullptr,
96  const char *headercomment = nullptr,
97  Bool_t appendmode = kFALSE);
98 
100  static void CloseLogfile();
101 
103  static const char *GetLogname();
104 
111  static const char *Message(Int_t prio, const char *text,...) GO4_PRINTF2_ARGS;
112 
114  static void Debug(const char *text,...) GO4_PRINTF_ARGS;
115 
117  static void Info(const char *text,...) GO4_PRINTF_ARGS;
118 
120  static void Warn(const char *text,...) GO4_PRINTF_ARGS;
121 
123  static void Error(const char *text,...) GO4_PRINTF_ARGS;
124 
126  static void Printf(Bool_t _stdout, const char *text);
127 
129  static void PrintRate(ULong64_t cnt, double rate);
130 
133  static void WriteLogfile(const char *text, Bool_t withtime = kTRUE);
134 
136  static void set_trace_level(int) {}
137 
139  static void SetTracePriority(int) {}
140 
142  static void StartTracing() { Instance(); SetIgnoreLevel(0); }
143 
145  static void StopTracing() { Instance(); SetIgnoreLevel(1); }
146 
148  static const char *GetDefaultLogname();
149 
151  static const char *fgcLEFT;
152 
154  static const char *fgcRIGHT;
155 
157  static const char *fgcDEBUG;
158 
160  static const char *fgcINFO;
161 
163  static const char *fgcWARN;
164 
166  static const char *fgcERR;
167 
169  static const char *fgcDEFAULTLOG;
170 
173 
174  virtual ~TGo4Log();
175 
176  static void SetSniffer(TNamed *sniff);
177 
178  static void EnableRedirection();
179 
180  private:
181 
182  friend class TLogTimer;
183 
184  TGo4Log();
185 
186  static void ProcessRedirection(int kind = 0);
187 
189 
191  static TMutex *fgxMutex;
192 
194  static Int_t fgiIgnoreLevel;
195 
197  static Bool_t fgbOutputEnabled;
198 
200  static Bool_t fgbLogfileEnabled;
201 
203  static Bool_t fgbAutoMode;
204 
207 
209  static void *fgxLogfile;
210 
212  static TString fgxLogName;
213 
214  static TString fgsGO4SYS;
215 
216  static TNamed *fgSniffer;
217 
218  static int fgStdPipe[2];
219  static int fgStdSave;
220 
221  static TLogTimer *fgTimer;
222 
223  ClassDef(TGo4Log,1)
224 };
225 
226 /* for backward compatibility in user code: */
228 
229 #endif //TGO4LOG_H
static const char * GetLogname()
Definition: TGo4Log.cxx:343
static TGo4Log * Instance()
Definition: TGo4Log.cxx:85
static TGo4Log * fgxInstance
Definition: TGo4Log.h:188
static const char * fgcWARN
Definition: TGo4Log.h:163
static void Info(const char *text,...) GO4_PRINTF_ARGS
Definition: TGo4Log.cxx:294
static void WriteLogfile(const char *text, Bool_t withtime=kTRUE)
Definition: TGo4Log.cxx:420
static void CloseLogfile()
Definition: TGo4Log.cxx:444
static Bool_t IsOutputEnabled()
Definition: TGo4Log.cxx:358
static Bool_t fgbLogfileEnabled
Definition: TGo4Log.h:200
static void OpenLogfile(const char *name=nullptr, const char *headercomment=nullptr, Bool_t appendmode=kFALSE)
Definition: TGo4Log.cxx:383
static const char * GetDefaultLogname()
Definition: TGo4Log.cxx:348
static Bool_t fgbAutoMode
Definition: TGo4Log.h:203
static void SetIgnoreLevel(Int_t level)
Definition: TGo4Log.cxx:332
static void OutputEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:353
static const char * fgcRIGHT
Definition: TGo4Log.h:154
static const char * fgcDEBUG
Definition: TGo4Log.h:157
static Bool_t fgbOutputEnabled
Definition: TGo4Log.h:197
static TString fgsGO4SYS
Definition: TGo4Log.h:214
static int fgStdSave
redirected pipe for stdout
Definition: TGo4Log.h:219
static void ProcessRedirection(int kind=0)
Definition: TGo4Log.cxx:118
virtual ~TGo4Log()
Definition: TGo4Log.cxx:80
static void SetSniffer(TNamed *sniff)
Definition: TGo4Log.cxx:151
static const char * Message(Int_t prio, const char *text,...) GO4_PRINTF2_ARGS
Definition: TGo4Log.cxx:206
static void Debug(const char *text,...) GO4_PRINTF_ARGS
Definition: TGo4Log.cxx:281
static const char * fgcINFO
Definition: TGo4Log.h:160
TGo4Log()
Definition: TGo4Log.cxx:68
static const char * GO4INCPATH()
Definition: TGo4Log.cxx:179
static void EnableRedirection()
Definition: TGo4Log.cxx:93
static int fgStdPipe[2]
optional object to get all output via SetTitle method
Definition: TGo4Log.h:218
static Bool_t IsLogfileEnabled()
Definition: TGo4Log.cxx:368
#define GO4_PRINTF_ARGS
Definition: TGo4Log.h:37
static const char * fgcDEFAULTLOG
Definition: TGo4Log.h:169
static void StopTracing()
Definition: TGo4Log.h:145
#define GO4_PRINTF2_ARGS
Definition: TGo4Log.h:38
static Int_t fgiIgnoreLevel
Definition: TGo4Log.h:194
static void Error(const char *text,...) GO4_PRINTF_ARGS
Definition: TGo4Log.cxx:320
static TString fgxLogName
Definition: TGo4Log.h:212
static void Printf(Bool_t _stdout, const char *text)
Definition: TGo4Log.cxx:254
static void PrintRate(ULong64_t cnt, double rate)
Definition: TGo4Log.cxx:270
static TMutex * fgxMutex
Definition: TGo4Log.h:191
static void * fgxLogfile
Definition: TGo4Log.h:209
static void set_trace_level(int)
Definition: TGo4Log.h:136
static Int_t GetIgnoreLevel()
Definition: TGo4Log.cxx:338
static TNamed * fgSniffer
value of GO4SYS during run
Definition: TGo4Log.h:216
static void StartTracing()
Definition: TGo4Log.h:142
static TString subGO4SYS(const char *subdir)
Definition: TGo4Log.cxx:189
static char fgcMessagetext[__MESSAGETEXTLENGTH__]
Definition: TGo4Log.h:206
static const char * fgcLEFT
Definition: TGo4Log.h:151
static const char * GO4SYS()
Definition: TGo4Log.cxx:156
static TLogTimer * fgTimer
saved file for stdout
Definition: TGo4Log.h:221
static void AutoEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:373
#define __MESSAGETEXTLENGTH__
Definition: TGo4Log.h:22
static const char * fgcERR
Definition: TGo4Log.h:166
TGo4Log TGo4Trace
Definition: TGo4Log.h:227
static void SetTracePriority(int)
Definition: TGo4Log.h:139
static void Warn(const char *text,...) GO4_PRINTF_ARGS
Definition: TGo4Log.cxx:307
static Bool_t IsAutoEnabled()
Definition: TGo4Log.cxx:378
static void LogfileEnable(Bool_t on=kTRUE)
Definition: TGo4Log.cxx:363