|
- #ifndef TRACE_SERVICE_HEAD_FILE
- #define TRACE_SERVICE_HEAD_FILE
-
- #pragma once
-
- #include "KernelEngineHead.h"
-
- //////////////////////////////////////////////////////////////////////////////////
- //Spdlog
- #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE //在包含 *spdlog.h"之前,添加 SPDLOG_ACTIVE_LEVEL 宏定义可以设置期望的日志级别
- #include "../../Spdlog/spdlog/spdlog.h"
- #include <direct.h>
- #include <chrono>
- #include <unordered_map>
-
- class KERNEL_ENGINE_CLASS Logger
- {
-
- public:
- static void ShutDown();
-
- static Logger& GetInstance();
-
- std::shared_ptr<spdlog::logger> GetTableLogger(int tableId);
-
- void DeleteTableLogger(int tableId);
- std::shared_ptr<spdlog::logger>& GetLogger()
- {
- return logger_;
- };
-
- bool InitDefaultLog(std::string logger_name, std::string file_name, spdlog::level::level_enum log_level = spdlog::level::trace);
-
- private:
- Logger()
- {
- //InitDefaultLog("klog", "daily_log.log");
- //logger_ = spdlog::default_logger();
- };
- ~Logger();
- Logger(const Logger&) = delete;
- Logger& operator=(const Logger&) = delete;
-
- private:
- std::unordered_map<int, std::shared_ptr<spdlog::logger>> tablelogger_;//桌子日志
- std::shared_ptr<spdlog::logger> logger_; //默认全局日志
- std::string logfile_dir_;
- };
-
- #define LTrace(...) SPDLOG_LOGGER_TRACE(Logger::GetInstance().GetLogger(), __VA_ARGS__)
- #define LDebug(...) SPDLOG_LOGGER_DEBUG(Logger::GetInstance().GetLogger(), __VA_ARGS__)
- #define LInfo(...) SPDLOG_LOGGER_INFO(Logger::GetInstance().GetLogger(), __VA_ARGS__)
- #define LWarn(...) SPDLOG_LOGGER_WARN(Logger::GetInstance().GetLogger(), __VA_ARGS__)
- #define LError(...) SPDLOG_LOGGER_ERROR(Logger::GetInstance().GetLogger(), __VA_ARGS__)
- #define LCritical(...) SPDLOG_LOGGER_CRITICAL(Logger::GetInstance().GetLogger(), __VA_ARGS__)
-
- //追踪服务
- class KERNEL_ENGINE_CLASS CTraceService
- {
- //函数定义
- protected:
- //构造函数
- CTraceService();
-
- //服务配置
- public:
- //设置服务
- static bool SetTraceService(IUnknownEx* pIUnknownEx);
- //获取服务
- static VOID* GetTraceService(const IID& Guid, DWORD dwQueryVer);
- //获取服务
- static VOID* GetTraceServiceManager(const IID& Guid, DWORD dwQueryVer);
-
- //状态管理
- public:
- //追踪状态
- static bool IsEnableTrace(enTraceLevel TraceLevel);
- //追踪控制
- static bool EnableTrace(enTraceLevel TraceLevel, bool bEnableTrace);
-
- //功能函数
- public:
- //追踪信息
- static bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
- };
-
- //////////////////////////////////////////////////////////////////////////////////
-
- //追踪服务
- class KERNEL_ENGINE_CLASS CTraceServiceControl : public CRichEditCtrl, public ITraceService
- {
- //辅助变量
- protected:
- LONG m_lMaxLineCount; //最大行数
- LONG m_lReserveLineCount; //保留行数
- BYTE m_cbBuffer[MAX_ASYNCHRONISM_DATA]; //临时对象
-
- //组件变量
- protected:
- CWHDataQueue m_DataQueue; //数据队列
- CCriticalSection m_CriticalSection; //同步对象
-
- //函数定义
- public:
- //构造函数
- CTraceServiceControl();
- //析构函数
- virtual ~CTraceServiceControl();
-
- //基础接口
- public:
- //释放对象
- virtual VOID Release() { return; }
- //接口查询
- virtual VOID* QueryInterface(const IID& Guid, DWORD dwQueryVer);
-
- //信息接口
- public:
- //追踪信息
- virtual bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
-
- //重载函数
- protected:
- //绑定函数
- virtual VOID PreSubclassWindow();
-
- //功能函数
- public:
- //加载消息
- bool LoadMessage(LPCTSTR pszFileName);
- //保存信息
- bool SaveMessage(LPCTSTR pszFileName);
- //设置参数
- bool SetParameter(LONG lMaxLineCount, LONG lReserveLineCount);
-
- //辅助函数
- private:
- //配置服务
- VOID InitializeService();
- //获取颜色
- COLORREF GetTraceColor(enTraceLevel TraceLevel);
- //插入字串
- bool InsertString(LPCTSTR pszString, CHARFORMAT2& CharFormat);
-
- //回调函数
- private:
- //加载回调
- static DWORD CALLBACK LoadCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG* pcb);
- //保存回调
- static DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG* pcb);
-
- //菜单命令
- protected:
- //删除信息
- VOID OnClearAll();
- //全部选择
- VOID OnSelectAll();
- //拷贝字符
- VOID OnCopyString();
- //保存信息
- VOID OnSaveString();
- //删除字符
- VOID OnDeleteString();
-
- //消息映射
- protected:
- //建立消息
- INT OnCreate(LPCREATESTRUCT lpCreateStruct);
- //右键消息
- VOID OnRButtonDown(UINT nFlags, CPoint point);
- //追踪消息
- LRESULT OnTraceServiceMessage(WPARAM wParam, LPARAM lParam);
-
- DECLARE_MESSAGE_MAP()
- };
-
- //////////////////////////////////////////////////////////////////////////////////
-
- #endif
|