• Main Page
  • Modules
  • Classes
  • Files
  • File List

D:/Projekt/ECF_trunk/ECF/Logger.h

00001 #ifndef Logger_h
00002 #define Logger_h
00003 
00004 #include <string>
00005 #include <vector>
00006 #include <fstream>
00007 
00008 class State;
00009 typedef boost::shared_ptr<State> StateP;
00010 
00011 
00015 #define ECF_LOG(state, level, msg) \
00016     ( ((state)->getLogger()->getLogLevel() >= (level)) ? (state)->getLogger()->log((level), (msg)) : (void) 0 )
00017 
00018 
00022 #define ECF_LOG_ERROR(state, msg) \
00023     ( (state)->getLogger()->log(1, (msg)) )
00024 
00025 
00032 class Logger
00033 {
00034 public:
00035     typedef struct {
00036         int logLevel;
00037         std::string message;
00038     } Log;
00039 
00040     Logger();
00041     ~Logger();
00042 
00046     void log(int logLevel, std::string message);
00047 
00052     void saveTo(std::string fileName);
00053 
00058     void saveTo(bool check = false);
00059 
00060     void saveToX(std::string fileName);
00061 
00062     void saveToX();
00063 
00064     void flushLog();    
00065 
00070     void setLogFrequency(uint freq);
00071 
00072     void registerParameters(StateP state);
00073 
00077     bool initialize(StateP state);
00078 
00079     bool operate(StateP);
00080 
00081     void closeLog()
00082     {   logFile_.close();   }
00083 
00084     int getLogLevel()
00085     {   return currentLevel_;   }
00086 
00087 protected:
00088     std::vector<Log> logs_;
00089     int currentLevel_;
00090     uint logFrequency_;
00091     std::string logFileName_;
00092     bool bFileDefined_;
00093     std::ofstream logFile_;
00094     StateP state_;
00095 };
00096 typedef boost::shared_ptr<Logger> LoggerP;
00097 
00098 #endif

Generated on Tue Nov 4 2014 13:04:31 for ECF by  doxygen 1.7.1