-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.h
More file actions
47 lines (35 loc) · 1.41 KB
/
Copy pathlog.h
File metadata and controls
47 lines (35 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef SSERVER_LOG_H_INCLUDED
#define SSERVER_LOG_H_INCLUDED
#include "fd.h"
#include <string>
#include <boost/utility.hpp>
#include <sstream>
class Logger : boost::noncopyable {
public:
enum Level { DEBUG = 0, WARN, ERROR, FATAL };
void write(Level level, const std::string& message);
void set_level(Level level) { level_ = level; }
Level level() const { return level_; }
static Logger& instance();
private:
explicit Logger(const std::string& exe);
std::string prefix_;
Level level_;
FD log_;
};
inline void set_level(Logger::Level level) {
Logger::instance().set_level(level);
}
void set_level(const std::string& level);
#define MESSAGE(lvl, message) do { \
if(Logger::instance().level() <= (lvl)) { \
std::stringstream s_MESSAGE; \
s_MESSAGE << message; \
Logger::instance().write((lvl), s_MESSAGE.str()); \
} \
} while(false) \
#define DEBUG(message) MESSAGE(Logger::DEBUG, message)
#define WARN(message) MESSAGE(Logger::WARN, message)
#define ERROR(message) MESSAGE(Logger::ERROR, message)
#define FATAL(message) MESSAGE(Logger::FATAL, message)
#endif // SSERVER_LOG_H_INCLUDED