| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*************************************************************************
- 【文件名】 LoggerEntity.h
- 【功能模块和目的】 日志纪录功能实体类
- 【开发者及日期】 郑石诺 2015/01/06
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- #include <iostream>
- #include "logger.h"
- using namespace std;
- /*************************************************************************
- 【类名】 CLoggerEntity
- 【功能】 日志记录
- 【接口说明】
- 【开发者及日期】 郑石诺 2015/01/06
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- class CLoggerEntity : public ILogger
- {
- SINGLETON_DECLARE(CLoggerEntity)
- private:
- typedef struct tagLOG_ITEM
- {
- LOG_CLASS Class;
- LOG_LEVEL Level;
- TCHAR Date[LOG_DATATIME_LEN];
- TCHAR Content[LOG_BUFFER_LENGTH];
- tagLOG_ITEM(LOG_CLASS a_Class, LOG_LEVEL a_Level, LPCTSTR a_Date, LPCTSTR a_Content) : Class(a_Class), Level(a_Level)
- {
- ASSERT(a_Date != NULL);
- lstrcpy(Date, a_Date);
- ASSERT(a_Content != NULL);
- lstrcpy(Content, a_Content);
- }
- } LOG_ITEM, *PLOG_ITEM;
- typedef CList<PLOG_ITEM, PLOG_ITEM> ITEMLIST;
- public:
- ~CLoggerEntity(void);
- void init( CListCtrl* pList, LOG_DEV nDevType, LPCTSTR lpFilePath = NULL ); // 初始化
- void close(void); // 关闭
- void start(void); // 开始显示日志
- void stop(void); // 停止显示日志
- void log( LOG_CLASS nClass, LOG_LEVEL nLevel, char* format, ... ); // 显示日志
- void filterShow( LOG_CLASS nClass = LOG_CLASS_GENERAL, LOG_LEVEL nLevel = LOG_LEVEL_NORMAL ); // 日志过滤
- BOOL isStart(void) { return m_bIsLogger; }
- private:
- CLoggerEntity(void);
- // 记录日志信息线程函数
- static UINT __logThread(LPVOID pParam); // 线程函数(写文件)
- // 日志操作方法
- void __frameControl(); // 日志界面控制
- void __initConsoleWindow(void); // 打开控制台窗口
- FILE* __openLoggerFile(void); // 创建日志文件
- void __pushLog(LOG_CLASS nClass, LOG_LEVEL nLevel, LPCTSTR lpMessage);
- PLOG_ITEM __popLog(void);
- void __saveLog(PLOG_ITEM pItem, FILE* pFile); // 展示并保存日志
- void __flush(void);
- private:
- const static int FILE_MAX_SIZE = 5*1024*1024; // 文件最大长度限制
- const static int LOG_BUFFER_SIZE = 200; // 日志缓冲大小
- typedef CList<CString, CString> ListBuff;
- BOOL m_bStopLog; // 是否停止记录线程
- BOOL m_bIsLogger; // 是否启用日志记录
- CListCtrl* m_pListCtrl; // 日志列表控件
- UINT m_nFilterClass; // 日志类型的过滤方式
- UINT m_nFilterLevel; // 日志级别的过滤方式
- CString m_arClass[4]; // 日志类型对应字符串值
- CString m_arLevel[4]; // 日志级别对应字符串值
- LOG_DEV m_nDevType; // 日志发起设备
- CString m_strLoggerName; // 根据设备得出日志名
- CString m_strFileDircet; // 写文件目录
- CWinThread* m_pThread; // 线程类指针
- ITEMLIST m_ItemList; // 日志项缓冲区
- CCriticalSection m_LockSection; // 线程临界区对象
- };
|