升龙物业 老版本 ocx IPO, 加密狗 转值班电话

LoggerEntity.h 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*************************************************************************
  2. 【文件名】 LoggerEntity.h
  3. 【功能模块和目的】 日志纪录功能实体类
  4. 【开发者及日期】 郑石诺 2015/01/06
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include <iostream>
  11. #include "logger.h"
  12. using namespace std;
  13. /*************************************************************************
  14. 【类名】 CLoggerEntity
  15. 【功能】 日志记录
  16. 【接口说明】
  17. 【开发者及日期】 郑石诺 2015/01/06
  18. 【版本】 V1.0.0
  19. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  20. 【更改记录】
  21. *************************************************************************/
  22. class CLoggerEntity : public ILogger
  23. {
  24. SINGLETON_DECLARE(CLoggerEntity)
  25. private:
  26. typedef struct tagLOG_ITEM
  27. {
  28. LOG_CLASS Class;
  29. LOG_LEVEL Level;
  30. TCHAR Date[LOG_DATATIME_LEN];
  31. TCHAR Content[LOG_BUFFER_LENGTH];
  32. tagLOG_ITEM(LOG_CLASS a_Class, LOG_LEVEL a_Level, LPCTSTR a_Date, LPCTSTR a_Content) : Class(a_Class), Level(a_Level)
  33. {
  34. ASSERT(a_Date != NULL);
  35. lstrcpy(Date, a_Date);
  36. ASSERT(a_Content != NULL);
  37. lstrcpy(Content, a_Content);
  38. }
  39. } LOG_ITEM, *PLOG_ITEM;
  40. typedef CList<PLOG_ITEM, PLOG_ITEM> ITEMLIST;
  41. public:
  42. ~CLoggerEntity(void);
  43. void init( CListCtrl* pList, LOG_DEV nDevType, LPCTSTR lpFilePath = NULL ); // 初始化
  44. void close(void); // 关闭
  45. void start(void); // 开始显示日志
  46. void stop(void); // 停止显示日志
  47. void log( LOG_CLASS nClass, LOG_LEVEL nLevel, char* format, ... ); // 显示日志
  48. void filterShow( LOG_CLASS nClass = LOG_CLASS_GENERAL, LOG_LEVEL nLevel = LOG_LEVEL_NORMAL ); // 日志过滤
  49. BOOL isStart(void) { return m_bIsLogger; }
  50. private:
  51. CLoggerEntity(void);
  52. // 记录日志信息线程函数
  53. static UINT __logThread(LPVOID pParam); // 线程函数(写文件)
  54. // 日志操作方法
  55. void __frameControl(); // 日志界面控制
  56. void __initConsoleWindow(void); // 打开控制台窗口
  57. FILE* __openLoggerFile(void); // 创建日志文件
  58. void __pushLog(LOG_CLASS nClass, LOG_LEVEL nLevel, LPCTSTR lpMessage);
  59. PLOG_ITEM __popLog(void);
  60. void __saveLog(PLOG_ITEM pItem, FILE* pFile); // 展示并保存日志
  61. void __flush(void);
  62. private:
  63. const static int FILE_MAX_SIZE = 5*1024*1024; // 文件最大长度限制
  64. const static int LOG_BUFFER_SIZE = 200; // 日志缓冲大小
  65. typedef CList<CString, CString> ListBuff;
  66. BOOL m_bStopLog; // 是否停止记录线程
  67. BOOL m_bIsLogger; // 是否启用日志记录
  68. CListCtrl* m_pListCtrl; // 日志列表控件
  69. UINT m_nFilterClass; // 日志类型的过滤方式
  70. UINT m_nFilterLevel; // 日志级别的过滤方式
  71. CString m_arClass[4]; // 日志类型对应字符串值
  72. CString m_arLevel[4]; // 日志级别对应字符串值
  73. LOG_DEV m_nDevType; // 日志发起设备
  74. CString m_strLoggerName; // 根据设备得出日志名
  75. CString m_strFileDircet; // 写文件目录
  76. CWinThread* m_pThread; // 线程类指针
  77. ITEMLIST m_ItemList; // 日志项缓冲区
  78. CCriticalSection m_LockSection; // 线程临界区对象
  79. };