| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <cstdarg> |
| | #include <cstdio> |
| |
|
| | namespace utilities { |
| | class log |
| | { |
| | public: |
| | enum class type { |
| | debug = 0, |
| | info = 1, |
| | warn = 2, |
| | error = 3, |
| | }; |
| | |
| | log() = default; |
| | explicit log(const type& mode) : type_(mode) {} |
| | ~log() = default; |
| |
|
| | void print(const type& mode, const char *fmt, ...) const { |
| | if (mode >= this->type_) { |
| | switch (mode) { |
| | case type::debug: |
| | ::fprintf(stdout, "[DEBUG] "); |
| | break; |
| | case type::info: |
| | ::fprintf(stdout, "[INFO] "); |
| | break; |
| | case type::warn: |
| | ::fprintf(stdout, "[WARNING] "); |
| | break; |
| | case type::error: |
| | ::fprintf(stdout, "[ERROR] "); |
| | break; |
| | } |
| |
|
| | ::va_list args; |
| | va_start(args, fmt); |
| | ::vprintf( fmt, args); |
| | va_end(args); |
| | } |
| | ::fflush(stdout); |
| | } |
| | void set_level(const type& mode) { |
| | this->type_ = mode; |
| | } |
| |
|
| | private: |
| | type type_ = type::warn; |
| | }; |
| |
|
| | static log glog; |
| | } |
| |
|