00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef LOGGER_H_
00025 #define LOGGER_H_
00026
00027 #include <boost/shared_ptr.hpp>
00028 #include <string>
00029 #include <sstream>
00030
00031 namespace MetNoFimex {
00032
00038 class Logger
00039 {
00040 public:
00044 enum LogLevel {
00045 OFF = 1000,
00046 FATAL = 900,
00047 ERROR = 800,
00048 WARN = 700,
00049 INFO = 600,
00050 DEBUG = 500
00051 };
00052 Logger(const std::string& className);
00053 virtual ~Logger();
00057 virtual bool isEnabledFor(LogLevel level);
00065 virtual void forcedLog(LogLevel level, const std::string& message, const char* filename, unsigned int lineNumber);
00066 };
00067
00073 extern Logger::LogLevel defaultLogLevel();
00074 extern void defaultLogLevel(Logger::LogLevel);
00075
00082 #define LOG4FIMEX(logger, level, message) { \
00083 if (logger->isEnabledFor(level)) {\
00084 std::ostringstream buffer; \
00085 buffer << message; \
00086 logger->forcedLog(level, buffer.str(), __FILE__, __LINE__);}}
00087
00088 typedef boost::shared_ptr<Logger> LoggerPtr;
00095 extern LoggerPtr getLogger(const std::string& className);
00096
00097 }
00098
00099
00100 #endif