00001
00015 #ifndef ClassStLoggerManager
00016 #define ClassStLoggerManager
00017 #include "StMessMgr.h"
00018
00019 #ifndef __CINT__
00020 # include <log4cxx/logger.h>
00021 # include <vector>
00022 # include <cassert>
00023 # include "StarOptionFilter.h"
00024 #endif
00025
00026
00027
00028
00029
00030
00031 class StMessTypeList;
00032 class StMessageCounter;
00033 class StMessTypeList;
00034
00035
00036 #ifndef ClassMessVec
00037 #define ClassMessVec
00038
00039
00040
00041 #endif
00042
00043 class StLoggerManager : public StMessMgr {
00044
00045 private:
00046 #ifndef __CINT__
00047 log4cxx::LoggerPtr fLogger;
00048 static log4cxx::LoggerPtr fgQALogger;
00049 static log4cxx::LoggerPtr &fgUCMLogger;
00050 #endif
00051
00052 static StMessMgr* mInstance;
00053 static const char *fgLevels;
00054
00055
00056 unsigned char fCurType;
00057 char* fCurOpt;
00058 #ifndef __CINT__
00059 std::vector<std::string> fSourceFileNames;
00060 std::string fLastMessage;
00061 ostrstream fStreams[7];
00062 #endif
00063 int fLineNumbers[10];
00064 int fAllowRepeat;
00065 int fLastRepeatCounter;
00066 #ifndef __CINT__
00067 log4cxx::varia::StarOptionFilterPtr fStarOptionFilter;
00068 log4cxx::LevelPtr fDefaultLevel;
00069 #endif
00070
00071
00072
00073
00074 protected:
00075
00076
00077 static inline int LevelIndex(char level);
00078
00079 protected:
00080 StLoggerManager(const char *loggerName="BFC");
00081 StLoggerManager(const StLoggerManager&);
00082 virtual void BuildMessage(const char* mess="", unsigned char type=0,
00083 const char* opt=0,const char *sourceFileName=0, int lineNumber=-1);
00084 #ifndef __CINT__
00085 void SetStarOptionFilter(const log4cxx::varia::StarOptionFilterPtr& filter);
00086 const log4cxx::varia::StarOptionFilterPtr& GetStarOptionFilter() const;
00087 log4cxx::varia::StarOptionFilterPtr& GetStarOptionFilter();
00088 ostrstream &Stream();
00089 #endif
00090
00091 protected:
00092 friend class StChain;
00093 virtual void IgnoreRepeats();
00094 virtual void AllowRepeats();
00095 virtual void AllowRepeats(int nRepeats);
00096
00097 virtual int PrintList(messVec* list);
00098 virtual const messVec* GetAll();
00099 static void DestroyInstance();
00100
00101 public:
00102 virtual ~StLoggerManager();
00103 virtual ostream& OperatorShift(ostream& os, StMessage* stm);
00104 static StMessMgr* StarLoggerInit();
00105 static StMessMgr* StarLoggerInit(const char *loggerName);
00106 virtual StMessMgr* Instantiate();
00107 virtual StMessMgr* Instantiate(const char *loggerName);
00108
00109 virtual bool isDebugEnabled() const;
00110 virtual bool isWarnEnabled() const;
00111 virtual bool isErrorEnabled() const;
00112 virtual bool isInfoEnabled() const;
00113 virtual bool isFatalEnabled() const;
00114 virtual bool isEnabledFor() const;
00115 virtual bool isQAInfoEnabled() const;
00116 virtual bool isUCMInfoEnabled()const;
00117
00118
00119
00120 virtual ostrstream& Message(const char* mess="", const char* type="",
00121 const char* opt=0,const char *sourceFileName=0, int lineNumber=-1);
00122 virtual void Print();
00123
00124 virtual int PrintAll();
00125
00126 virtual StMessage* FindMessage(const char* s1, const char* s2="",
00127 const char* s3="", const char* s4="", messVec* list=0);
00128 virtual messVec* FindMessageList(const char* s1, const char* s2="",
00129 const char* s3="", const char* s4="", messVec* list=0);
00130 virtual int RemoveMessage(StMessage* mess);
00131 virtual int RemoveMessage(const char* s1, const char* s2="",
00132 const char* s3="", const char* s4="");
00133 virtual void SetLimit(const char* str, int n=0);
00134 virtual int GetLimit(const char* str);
00135 virtual void ListLimits();
00136 virtual void RemoveLimit(const char* str);
00137 virtual void SetLevel(Int_t );
00138 virtual Int_t GetLevel(Int_t ) const;
00139 virtual const char *GetName() const { return 0;}
00140 virtual void SwitchOff(const char* str);
00141 virtual void SwitchOn(const char* str);
00142 virtual void FixOn(const char* str);
00143 virtual void NoLimits();
00144 virtual void Summary(size_t nTerms=1);
00145 virtual void MemorySummary();
00146 virtual void MemoryOn();
00147 virtual void MemoryOff();
00148 virtual int AddType(const char* type, const char* text);
00149 virtual int ListTypes();
00150 virtual void Close();
00151
00152
00153
00154 virtual ostrstream& Info(const char* mess="", const char* opt="O"
00155 ,const char *sourceFileName=0, int lineNumber=-1);
00156 virtual int PrintInfos();
00157 virtual const messVec* GetInfos();
00158 virtual StMessage* FindInfo(const char* s1, const char* s2="",
00159 const char* s3="", const char* s4="");
00160 virtual messVec* FindInfoList(const char* s1, const char* s2="",
00161 const char* s3="", const char* s4="");
00162
00163
00164 virtual ostrstream& Warning(const char* mess="", const char* opt="E"
00165 ,const char *sourceFileName=0, int lineNumber=-1);
00166 virtual int PrintWarnings();
00167 virtual const messVec* GetWarnings();
00168 virtual StMessage* FindWarning(const char* s1, const char* s2="",
00169 const char* s3="", const char* s4="");
00170 virtual messVec* FindWarningList(const char* s1, const char* s2="",
00171 const char* s3="", const char* s4="");
00172
00173
00174 virtual ostrstream& Error(const char* mess="", const char* opt="E"
00175 ,const char *sourceFileName=0, int lineNumber=-1);
00176 virtual int PrintErrors();
00177 virtual const messVec* GetErrors();
00178 virtual StMessage* FindError(const char* s1, const char* s2="",
00179 const char* s3="", const char* s4="");
00180 virtual messVec* FindErrorList(const char* s1, const char* s2="",
00181 const char* s3="", const char* s4="");
00182
00183
00184 virtual ostrstream& Debug(const char* mess="", const char* opt="OT"
00185 ,const char *sourceFileName=0, int lineNumber=-1);
00186 virtual int PrintDebug();
00187 virtual const messVec* GetDebugs();
00188 virtual StMessage* FindDebug(const char* s1, const char* s2="",
00189 const char* s3="", const char* s4="");
00190 virtual messVec* FindDebugList(const char* s1, const char* s2="",
00191 const char* s3="", const char* s4="");
00192
00193
00194 virtual ostrstream& QAInfo(const char* mess="", const char* opt="OS"
00195 ,const char *sourceFileName=0, int lineNumber=-1);
00196 virtual int PrintQAInfo();
00197 virtual const messVec* GetQAInfos();
00198 virtual StMessage* FindQAInfo(const char* s1, const char* s2="",
00199 const char* s3="", const char* s4="");
00200 virtual messVec* FindQAInfoList(const char* s1, const char* s2="",
00201 const char* s3="", const char* s4="");
00202
00203
00204 virtual ostrstream& UCMInfo(const char* mess="", const char* opt="OS"
00205 ,const char *sourceFileName=0, int lineNumber=-1);
00206 virtual int PrintUCMInfo();
00207 virtual const messVec* GetUCMInfos();
00208 virtual StMessage* FindUCMInfo(const char* s1, const char* s2="",
00209 const char* s3="", const char* s4="");
00210 virtual messVec* FindUCMInfoList(const char* s1, const char* s2="",
00211 const char* s3="", const char* s4="");
00212
00213
00214 virtual ostrstream& out(const char* mess="");
00215 virtual ostrstream& err(const char* mess="");
00216
00217 virtual void PrintInfo();
00218
00219
00220 virtual ostrstream& Fatal(const char* mess="", const char* opt="F",const char *sourceFileName=0, int lineNumber=-1);
00221
00222
00223 void PrintLogger(const char* mess, unsigned char type, const char* opt, const char *sourceFileName=0, int lineNumber=-1);
00224
00225 #ifdef __ROOT__
00226 ClassDef(StLoggerManager,0)
00227 #endif
00228 };
00229
00230
00231 inline int StLoggerManager::LevelIndex(char level)
00232 {
00233 const char *thisLevel = strchr(StLoggerManager::fgLevels,level);
00234 assert(thisLevel);
00235 return thisLevel-StLoggerManager::fgLevels;
00236 }
00237 #ifndef __CINT__
00238
00239 inline void StLoggerManager::SetStarOptionFilter(const log4cxx::varia::StarOptionFilterPtr& filter)
00240 { fStarOptionFilter = filter; }
00241
00242 inline const log4cxx::varia::StarOptionFilterPtr& StLoggerManager::GetStarOptionFilter() const
00243 { return fStarOptionFilter;}
00244
00245
00246 inline log4cxx::varia::StarOptionFilterPtr& StLoggerManager::GetStarOptionFilter()
00247 { return fStarOptionFilter;}
00248
00249 #endif
00250 #endif
00251
00252