#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 #include #include class KERNEL_ENGINE_CLASS Logger { public: static void ShutDown(); static Logger& GetInstance(); std::shared_ptr GetTableLogger(int tableId); void DeleteTableLogger(int tableId); std::shared_ptr& 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> tablelogger_;//桌子日志 std::shared_ptr 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