DiaDes  0.1
DIAgnosis of Discrete-Event System
Log.hh
Go to the documentation of this file.
1 #ifndef __DIADES__UTILS__LOG__HH
2 #define __DIADES__UTILS__LOG__HH
3 
13 #include <boost/format.hpp>
14 #include <boost/date_time/posix_time/posix_time.hpp>
15 #include "Logger.hh"
16 
17 
18 namespace Diades
19 {
20  namespace Utils
21  {
22  using boost::posix_time::ptime;
23  using boost::format;
24 
32  class Log
33  {
34  public:
35  typedef LogLevel Level;
36 
43 
55  Log(Logger & logger,Level level,const string & msg):
56  _now(second_clock::local_time()),
57  _fmt(msg),_logger(logger),_level(level){}
58 
59 
60 
70  Log(Level level,const string & msg):
71  _now(second_clock::local_time()),
72  _fmt(msg),_logger(),_level(level){}
73 
74 
81  ~Log()
82  {
83  _logger.trace(_level,_now,_fmt.str());
84  }
85 
86 
95  template <typename T>
96  Log & operator %(T value)
97  {
98 #ifndef __NO__DIADES__LOG
99  _fmt % value;
100 #endif
101  return *this;
102  }
103 
104 
105  protected:
106  ptime _now;
107  format _fmt;
109  Level _level;
110  };
111 
112 
113 
114 
123  template<LogLevel level>
124  Log log(Logger logger, const string & msg)
125  {
126 #ifdef __NO__DIADES__LOG
127  return Log();
128 #else
129  return Log(logger,level,msg);
130 #endif
131  }
132 
133 
142  template<LogLevel level>
143  Log log(const string & msg)
144  {
145 #ifdef __NO__DIADES__LOG
146  return Log();
147 #else
148  return Log(level,msg);
149 #endif
150  }
151 
152 
153 
162  template<LogLevel level>
163  void saveLog(Logger logger, ostream & os)
164  {
165 #ifndef __NO__DIADES__LOG
166  logger.printLevel(level,os);
167 #endif
168  }
169 
170 
179  template<LogLevel level>
180  void saveLog(ostream & os)
181  {
182 #ifndef __NO__DIADES__LOG
183  Logger().printLevel(level,os);
184 #endif
185  }
186 
187 
188 
196  void saveLog(ostream & os);
197 
198 
208  void saveLog(Diades::Utils::Logger logger, ostream & os);
209 
210 
218  void saveAllLogs(ostream & os);
219 
220 
221  };
222 };
223 
224 
225 #endif
Logger _logger
Definition: Log.hh:108
Log(Level level, const string &msg)
Definition: Log.hh:70
Level _level
Definition: Log.hh:109
void trace(Level level, ptime time, const string &msg) const
Definition: Logger.hh:184
format _fmt
Definition: Log.hh:107
LogLevel Level
Definition: Log.hh:35
void saveAllLogs(ostream &os)
Namespace of the Diades project.
void saveLog(Logger logger, ostream &os)
Definition: Log.hh:163
Logger that records Log throughout the Diades Project.
Log & operator%(T value)
Definition: Log.hh:96
Log(Logger &logger, Level level, const string &msg)
Definition: Log.hh:55
Log log(Logger logger, const string &msg)
Definition: Log.hh:124
void printLevel(Level level, ostream &os)
Definition: Logger.hh:198