CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DQM/CSCMonitorModule/interface/CSCDQM_Logger.h

Go to the documentation of this file.
00001 /*
00002  * =====================================================================================
00003  *
00004  *       Filename:  CSCDQM_Logger.h
00005  *
00006  *    Description:  Histo Provider to EventProcessor
00007  *
00008  *        Version:  1.0
00009  *        Created:  10/03/2008 10:26:04 AM
00010  *       Revision:  none
00011  *       Compiler:  gcc
00012  *
00013  *         Author:  Valdas Rapsevicius, valdas.rapsevicius@cern.ch
00014  *        Company:  CERN, CH
00015  *
00016  * =====================================================================================
00017  */
00018 
00019 #ifndef CSCDQM_Logger_H
00020 #define CSCDQM_Logger_H
00021 
00022 #include <iostream>
00023 #include <iomanip>
00024 //#include <typeinfo> typeid(this).name()
00025 
00026 #include <FWCore/MessageLogger/interface/MessageLogger.h>
00027 
00028 #ifdef DQMGLOBAL
00029 
00030 #define LOG_DEBUG       ((!edm::MessageDrop::instance()->debugEnabled) ? \
00031                         cscdqm::LogDebugger(false) : cscdqm::LogDebugger())
00032 
00033 #endif
00034 
00035 #ifdef DQMLOCAL
00036 
00037 #define LOG_DEBUG       cscdqm::LogDebugger()
00038 
00039 #endif
00040 
00041 #define LOG_ERROR       cscdqm::LogError()
00042 #define LOG_WARN        cscdqm::LogWarn()
00043 #define LOG_INFO        cscdqm::LogInfo()
00044 #define LOG_COUT        cscdqm::LogCout()
00045 
00046 namespace cscdqm {
00047 
00052   class Logger { };
00053 
00059   class LogInfo : public edm::LogInfo, public Logger {
00060 #ifdef DQMGLOBAL
00061     public: LogInfo() : edm::LogInfo("") { }
00062 #else
00063     public: LogInfo() : edm::LogInfo() { }
00064 #endif
00065   };
00066 
00072   class LogWarn : public edm::LogWarning, public Logger {
00073 #ifdef DQMGLOBAL
00074     public: LogWarn() : edm::LogWarning("") { }
00075 #else
00076     public: LogWarn() : edm::LogWarning() { }
00077 #endif
00078   };
00079 
00085   class LogError : public edm::LogError, public Logger {
00086 #ifdef DQMGLOBAL
00087     public: LogError() : edm::LogError("") { }
00088 #else
00089     public: LogError() : edm::LogError() { }
00090 #endif
00091   };
00092 
00093 #ifdef DQMGLOBAL
00094 
00100   class LogDebugger : public edm::LogDebug_, public Logger {
00101     public: 
00102       LogDebugger() : edm::LogDebug_("", __FILE__, __LINE__) { }
00103       LogDebugger(const bool empty) : edm::LogDebug_() { }
00104   };
00105 
00106 #endif
00107 
00108 #ifdef DQMLOCAL
00109 
00115   class LogDebugger : public edm::LogDebug, public Logger {
00116     public: 
00117       LogDebugger() : edm::LogDebug() { }
00118   };
00119 
00120 #endif
00121 
00127   class LogCout : public Logger {
00128     public:
00129 
00130       LogCout() { }
00131       ~LogCout() { std::cout << std::endl; }
00132 
00133       template< class T >
00134       LogCout& operator<< (T const & t) { 
00135         std::cout << t;
00136         return *this; 
00137       }
00138 
00139       LogCout& operator<< (std::ostream&(*f)(std::ostream&)) { 
00140         std::cout << f;
00141         return *this; 
00142       }
00143 
00144       LogCout& operator<< (std::ios_base&(*f)(std::ios_base&) ) { 
00145         std::cout << f;
00146         return *this; 
00147       }     
00148 
00149   };
00150 
00151 }
00152 
00153 #endif