X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HLT%2FTPCLib%2FAliHLTTPCLog.h;h=28146e2ccea707e2da50cc8373959c96b442429b;hb=58bc08c10de3f4a77dea8f6631af26204bb5e5a4;hp=1535302bca1855c8658b4211c82c7f6c5b9777a3;hpb=4aa418779d51071508882a601fae75aefe126321;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/TPCLib/AliHLTTPCLog.h b/HLT/TPCLib/AliHLTTPCLog.h index 1535302bca1..28146e2ccea 100644 --- a/HLT/TPCLib/AliHLTTPCLog.h +++ b/HLT/TPCLib/AliHLTTPCLog.h @@ -4,31 +4,98 @@ #ifndef ALIHLTTPCLOG_H #define ALIHLTTPCLOG_H -#ifndef __CINT__ -#include -#endif +// see below for class documentation +// or +// refer to README to build package +// or +// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt -class AliHLTTPCLog { +#include +#include +#include "AliHLTLogging.h" + +using namespace std; + +/** key to indicate the origin part */ +#define AliHLTTPCLogKeyOrigin "__origin" +/** key to indicate the keyword part */ +#define AliHLTTPCLogKeyKeyword "__key" +/** key to indicate the message part */ +#define AliHLTTPCLogKeyMessage "__message" + +/** + * @class AliHLTTPCLog + * This class implements the old HLT TPC logging mechanism. + * Logging messages are now forwarded to the HLT logging system + * \em Note: the old LOG and ENDLOG macros should be used any longer, + * use the HLT logging macros or AliRoot logging macros instead. + * @see AliHLTLogging + */ +class AliHLTTPCLog { public: - enum TLogLevel { kNone = 0, kDebug= 0x01, kInformational = 0x02, kWarning = 0x04, kError = 0x08 , kFatal = 0x10, kPrimary = 0x80, kAll = 0x9F }; - //enum TLogCmd { kEnd, kPrec, kHex=std::ios_base::hex, kDec=std::ios_base::dec }; - static const char* kEnd; - static const char* kPrec; - static const char* kHex; - static const char* kDec; -/* static const std::ios_base::fmtflags kHex; */ -/* static const std::ios_base::fmtflags kDec; */ - static TLogLevel fgLevel; + enum TLogLevel { kNone = 0, kBenchmark=0x01,kDebug= 0x02, kInformational = 0x04, kWarning = 0x08, kError = 0x10 , kFatal = 0x20, kPrimary = 0x80, kAll = 0xBF }; + + private: + /** not used */ + static const char* kEnd; //! transient + /** not used */ + static const char* kPrec; //! transient + public: + /** stream manipulator for hex output, but empty in the implementation */ + static const char* kHex; //! transient + /** stream manipulator for decimal output, but empty in the implementation */ + static const char* kDec; //! transient + + /** + * Flush the stringstream and print output to the HLT logging system. + * The attributes are set before the message is streamed into the + * stringstream.
+ * The LOG macro sets the attributes from the macro arguments and provides + * the stringstream.
+ * The ENDLOG macro calls the Flush method after the message was streamed + * into the stringstream. + */ + static const char* Flush(); + + /** + * Get the stream. + */ + static stringstream& GetStream() {return fgStream;} + + /** + * Get the logging level. + */ + static TLogLevel GetLevel() {return fgLevel;} + + private: + /** a stringstream to receive the output */ + static stringstream fgStream; // see above + + /** the logging filter */ + static TLogLevel fgLevel; // see above + + /** HLT logging instance */ + static AliHLTLogging fgHLTLogging; // see above + + /** copy constructor prohibited */ + AliHLTTPCLog(const AliHLTTPCLog&); + /** assignment operator prohibited */ + AliHLTTPCLog& operator=(const AliHLTTPCLog&); + }; -#if __GNUC__ >= 3 +/** LOG macro to be used by the TPC code + * \em Note: this macro should be used any longer + */ #define LOG( lvl, origin, keyword ) \ - if (lvl>=AliHLTTPCLog::fgLevel) std::cerr<<"["<=AliHLTTPCLog::fgLevel) cerr<<"["<=AliHLTTPCLog::GetLevel()) AliHLTTPCLog::GetStream() << lvl \ + << " " << AliHLTTPCLogKeyOrigin << " " << origin \ + << " " << AliHLTTPCLogKeyKeyword << " " << keyword \ + << " " << AliHLTTPCLogKeyMessage << " " + +/** ENDLOG macro calls the Flush method + * \em Note: this macro should be used any longer + */ +#define ENDLOG AliHLTTPCLog::Flush() + #endif /* ALIHLTTPCLOG_H */