#include "TGo4Log.h" #include "Riostream.h" #include "TDatime.h" #include "TMutex.h" #include "TSystem.h" #include "snprintf.h" #include "TGo4LockGuard.h" const char* TGo4Log::fgcLEFT = "GO4-"; //const char* TGo4Log::fgcRIGHT = " -1 && prio %s %s", fgcLEFT, prefix, txtbuf,fgcRIGHT); if(fgbOutputEnabled) { cout << fgcMessagetext << endl; } else {} return fgcMessagetext; } void TGo4Log::Debug(const char* text,...) { if(fgiIgnoreLevel>0) return; Instance(); TGo4LockGuard(fxMutex); Text_t txtbuf[fguMESLEN]; va_list args; va_start(args, text); vsnprintf(txtbuf, fguMESLEN, text, args); va_end(args); Message(0,txtbuf); } void TGo4Log::Info(const char* text,...) { if(fgiIgnoreLevel>1) return; Instance(); TGo4LockGuard(fxMutex); Text_t txtbuf[fguMESLEN]; va_list args; va_start(args, text); vsnprintf(txtbuf, fguMESLEN, text, args); va_end(args); Message(1,txtbuf); } void TGo4Log::Warn(const char* text,...) { if(fgiIgnoreLevel>2) return; Instance(); TGo4LockGuard(fxMutex); Text_t txtbuf[fguMESLEN]; va_list args; va_start(args, text); vsnprintf(txtbuf, fguMESLEN, text, args); va_end(args); Message(2,txtbuf); } void TGo4Log::Error(const char* text,...) { Instance(); TGo4LockGuard(fxMutex); Text_t txtbuf[fguMESLEN]; va_list args; va_start(args, text); vsnprintf(txtbuf, fguMESLEN, text, args); va_end(args); Message(3,txtbuf); } void TGo4Log::SetIgnoreLevel(Int_t level) { TGo4LockGuard(fxMutex); fgiIgnoreLevel=level; } Int_t TGo4Log::GetIgnoreLevel() { return fgiIgnoreLevel; } const char* TGo4Log::GetLogname() { return fgxLogName.Data(); } void TGo4Log::OutputEnable(Bool_t on) { TGo4LockGuard(fxMutex); fgbOutputEnabled=on; } Bool_t TGo4Log::IsOutputEnabled() { return fgbOutputEnabled; } void TGo4Log::LogfileEnable(Bool_t on) { TGo4LockGuard(fxMutex); fgbLogfileEnabled=on; } Bool_t TGo4Log::IsLogfileEnabled() { return fgbLogfileEnabled; } void TGo4Log::AutoEnable(Bool_t on) { TGo4LockGuard(fxMutex); fgbAutoMode=on; } Bool_t TGo4Log::IsAutoEnabled() { return fgbAutoMode; } void TGo4Log::OpenLogfile(const char* name, const char* headercomment, Bool_t appendmode) { TGo4LockGuard(fxMutex); try { CloseLogfile(); Text_t txtbuf[fguMESLEN]; if(name==0) { // default: encode pid into filename Int_t pid=gSystem->GetPid(); snprintf(txtbuf,fguMESLEN,"go4log-%d.txt",pid); } else { snprintf(txtbuf,fguMESLEN,"%s",name); } if(appendmode) fgxLogfile = new std::ofstream(txtbuf,ios::app); else fgxLogfile = new std::ofstream(txtbuf); if(((std::ofstream*)fgxLogfile)->fail()) { LogfileEnable(kFALSE); cerr <<"TGo4Log::OpenLogfile() - Error opening logfile "<