| | |
| | | #include "usg_common.h" |
| | | #include "usg_typedef.h" |
| | | |
| | | struct LoggerConfig { |
| | | std::string logFile; |
| | | int level; |
| | | bool console; |
| | | }; |
| | | |
| | | class Logger { |
| | | std::string configFile; |
| | | int level; |
| | | private: |
| | | std::string configFile; |
| | | LoggerConfig config; |
| | | FILE *logFile; |
| | | |
| | | void dolog(const char *fmt, va_list ap) |
| | | { |
| | | char buf[MAXBUF]; |
| | | vsnprintf(buf, MAXBUF-1, fmt, ap); |
| | | strcat(buf, "\n"); |
| | | fflush(stdout); /* in case stdout and stderr are the same */ |
| | | fputs(buf, stdout); |
| | | fflush(NULL); /* flushes all stdio output streams */ |
| | | } |
| | | void dolog(const char *fmt, va_list ap, int level, int err = 0); |
| | | |
| | | |
| | | void init(); |
| | | |
| | | private: |
| | | static const char *LOGGER_LEVEL_STR[] ; |
| | | public: |
| | | enum { |
| | | ALL , |
| | | DEBUG , |
| | | INFO , |
| | | WARN , |
| | | ERROR , |
| | | FATAL , |
| | | OFF |
| | | }; |
| | | enum LoggerLevel { ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF }; |
| | | |
| | | Logger(int l = INFO): level(l) {} |
| | | Logger(std::string cf); |
| | | |
| | | |
| | | void log(int _level, const char *fmt, ...); |
| | | Logger(int l = INFO); |
| | | Logger(std::string cf); |
| | | Logger(LoggerConfig & conf); |
| | | |
| | | void debug(const char *fmt, ...); |
| | | void info(const char *fmt, ...); |
| | | void warn(const char *fmt, ...); |
| | | void error(const char *fmt, ...); |
| | | void fatal(const char *fmt, ...); |
| | | ~Logger(); |
| | | |
| | | void log(int _level, const char *fmt, ...); |
| | | |
| | | void debug(const char *fmt, ...); |
| | | void info(const char *fmt, ...); |
| | | void warn(const char *fmt, ...); |
| | | void error(const char *fmt, ...); |
| | | void error(int err, const char *fmt, ...); |
| | | void fatal(const char *fmt, ...); |
| | | void fatal(int err, const char *fmt, ...) ; |
| | | |
| | | static const char * strlevel(int level); |
| | | }; |
| | | |
| | | #endif |