From 831e814ce9bdb84e86c06c4a52008f6bdaaa00d6 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 16 Nov 2018 00:24:51 +0800 Subject: =?UTF-8?q?*=E5=90=88=E5=B9=B6master=E5=88=B0minimal=E5=88=86?= =?UTF-8?q?=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/Utils/je_log.cpp | 81 ++++++++++++++++++++++++++++++++- src/libjin/Utils/je_log.h | 106 ++++++++----------------------------------- src/libjin/Utils/je_macros.h | 4 +- src/libjin/Utils/je_utils.h | 4 +- 4 files changed, 103 insertions(+), 92 deletions(-) (limited to 'src/libjin/Utils') diff --git a/src/libjin/Utils/je_log.cpp b/src/libjin/Utils/je_log.cpp index 2bcb25a..e369e14 100644 --- a/src/libjin/Utils/je_log.cpp +++ b/src/libjin/Utils/je_log.cpp @@ -1,2 +1,81 @@ #define LOGHELPER_IMPLEMENT -#include "je_log.h" \ No newline at end of file +#include "je_log.h" + +#define hasbit(flag, bit) ((flag & bit) == bit) + +unsigned int Loghelper::dir = Loghelper::Direction::DIR_CERR; +unsigned int Loghelper::levels = Loghelper::Level::LV_ALL; +std::ofstream Loghelper::fs; + +void Loghelper::log(Level _level, const char* _fmt, ...) +{ + if (!hasbit(levels, _level)) + return; +#define FORMAT_MSG_BUFFER_SIZE (204800) + const char* levelStr = nullptr; + switch (_level) + { + case LV_ERROR: + levelStr = "[Jin Error]: "; + break; + case LV_WARNING: + levelStr = "[Jin Warning]: "; + break; + case LV_INFO: + levelStr = "[Jin Info]: "; + break; + case LV_DEBUG: + levelStr = "[Jin Debug]: "; + break; + default: + levelStr = "[Jin Unknow]: "; + break; + } + char buffer[FORMAT_MSG_BUFFER_SIZE + 1] = { 0 }; + strcpy(buffer, levelStr); + va_list args; + va_start(args, _fmt); + vsnprintf(buffer + strlen(buffer), FORMAT_MSG_BUFFER_SIZE, _fmt, args); + va_end(args); + if (hasbit(dir, DIR_CERR)) + { + std::cerr << buffer << std::endl; + } + if (hasbit(dir, DIR_FILE)) + { + fs << buffer << std::endl; + } +#undef FORMAT_MSG_BUFFER_SIZE +} + +// 重定向 +void Loghelper::redirect(unsigned int _dir, char* _path) +{ + dir = _dir; + if (hasbit(dir, DIR_FILE)) + { + try + { + fs.open(_path, std::ios_base::app); + } + catch (std::ios_base::failure& e) { + dir = DIR_CERR; + log(Level::LV_WARNING, "重定向log路径 %s 失败", _path); + } + } +} + +// 筛选错误等级 +void Loghelper::restrict(unsigned int _levels) +{ + levels = _levels; +} + +void Loghelper::close() +{ + if (!fs.fail()) + fs.close(); + fs.clear(); +} + +#undef hasbit diff --git a/src/libjin/Utils/je_log.h b/src/libjin/Utils/je_log.h index 928a009..f81bbae 100644 --- a/src/libjin/Utils/je_log.h +++ b/src/libjin/Utils/je_log.h @@ -1,11 +1,13 @@ -#ifndef __LOG_HELPER_H -#define __LOG_HELPER_H +#ifndef __LOG_H__ELPER_H__ +#define __LOG_H__ELPER_H__ #include #include #include #include +#include "../core/je_configuration.h" + class Loghelper { public: @@ -21,7 +23,7 @@ public: { LV_NONE = 0, // none LV_ERROR = 1 << 1, // error - LV_WARN = 1 << 2, // warn + LV_WARNING = 1 << 2, // warn LV_INFO = 1 << 3, // info LV_DEBUG = 1 << 4, // debug LV_ALL = 0xffffffff @@ -43,89 +45,19 @@ private: static std::ofstream fs; // 输出文件流 }; -typedef Loghelper::Level Loglevel; - -#ifdef LOGHELPER_IMPLEMENT - -#define hasbit(flag, bit) ((flag & bit) == bit) - -unsigned int Loghelper::dir = Loghelper::Direction::DIR_CERR; -unsigned int Loghelper::levels = Loghelper::Level::LV_ALL; -std::ofstream Loghelper::fs; - -void Loghelper::log(Level _level, const char* _fmt, ...) -{ - if (!hasbit(levels, _level)) - return; -#define FORMAT_MSG_BUFFER_SIZE (204800) - const char* levelStr = nullptr; - switch (_level) - { - case LV_ERROR: - levelStr = "[Jin Error]:"; - break; - case LV_WARN: - levelStr = "[Jin Warn]:"; - break; - case LV_INFO: - levelStr = "[Jin Info]:"; - break; - case LV_DEBUG: - levelStr = "[Jin Debug]:"; - break; - default: - levelStr = "[Jin Unknown]:"; - break; - } - char buffer[FORMAT_MSG_BUFFER_SIZE + 1] = { 0 }; - strcpy(buffer, levelStr); - va_list args; - va_start(args, _fmt); - vsnprintf(buffer + strlen(buffer), FORMAT_MSG_BUFFER_SIZE, _fmt, args); - va_end(args); - if (hasbit(dir, DIR_CERR)) - { - std::cerr << buffer << std::endl; - } - if (hasbit(dir, DIR_FILE)) - { - fs << buffer << std::endl; - } -#undef FORMAT_MSG_BUFFER_SIZE -} -// 重定向 -void Loghelper::redirect(unsigned int _dir, char* _path) -{ - dir = _dir; - if (hasbit(dir, DIR_FILE)) - { - try - { - fs.open(_path, std::ios_base::app); - } - catch (std::ios_base::failure& e) { - dir = DIR_CERR; - log(Level::LV_WARN, "重定向log路径 %s 失败", _path); - } - } -} - -// 筛选错误等级 -void Loghelper::restrict(unsigned int _levels) -{ - levels = _levels; -} - -void Loghelper::close() -{ - if (!fs.fail()) - fs.close(); - fs.clear(); -} - -#undef hasbit - -#endif +typedef Loghelper::Level Loglevel; -#endif \ No newline at end of file +#if defined(jin_debug) + #define jin_log_error(f, ...) Loghelper::log(Loghelper::LV_ERROR, f, __VA_ARGS__) + #define jin_log_info(f, ...) Loghelper::log(Loghelper::LV_INFO, f, __VA_ARGS__) + #define jin_log_warning(f, ...) Loghelper::log(Loghelper::LV_WARNING, f, __VA_ARGS__) + #define jin_log_debug(f, ...) Loghelper::log(Loghelper::LV_DEBUG, f, __VA_ARGS__) +#else + #define jin_log_error(f, ...) + #define jin_log_info(f, ...) + #define jin_log_warning(f, ...) + #define jin_log_debug(f, ...) +#endif + +#endif // __LOG_H__ELPER_H__ \ No newline at end of file diff --git a/src/libjin/Utils/je_macros.h b/src/libjin/Utils/je_macros.h index 475a482..6e4e7a9 100644 --- a/src/libjin/Utils/je_macros.h +++ b/src/libjin/Utils/je_macros.h @@ -1,5 +1,5 @@ -#ifndef __JE_MACROS_H -#define __JE_MACROS_H +#ifndef __JE_MACROS_H__ +#define __JE_MACROS_H__ #include //#define implement // 实现接口 diff --git a/src/libjin/Utils/je_utils.h b/src/libjin/Utils/je_utils.h index 21c507d..a77c126 100644 --- a/src/libjin/Utils/je_utils.h +++ b/src/libjin/Utils/je_utils.h @@ -1,5 +1,5 @@ -#ifndef __JE_UTILS_H -#define __JE_UTILS_H +#ifndef __JE_UTILS_H__ +#define __JE_UTILS_H__ #include "je_macros.h" #include "je_endian.h" -- cgit v1.1-26-g67d0