?? writelog.h
字號:
// WriteLog.h: interface for the CWriteLog class.
//
//////////////////////////////////////////////////////////////////////
#ifndef __WRITELOG_H__
#define __WRITELOG_H__
//////////////////////////////////////////////////////////////////////
#include "BasicDefine.h"
#include "MyQueue.h"
#include "sxitBase.h"
//////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C"{
//////////////////////////////////////////////////////////////////////
//log level define 0: //不記
#define LEVEL_ERROR 1 //記錄系統運行嚴重錯誤...
#define LEVEL_SYS 2 //記錄系統運行過程信息...
#define LEVEL_LOG 3 //記錄收發包動作...
#define LEVEL_CONTENT 4 //記錄收發包詳細內容...
#define LEVEL_DEBUG 5 //記錄調試信息...
#define BAK_LOG_FORMAT "%s.%.2d%.2d.%.2d" //備份日志文件名格式(文件名.月日.序號)
#define DFT_LOGFILE "log.log" //默認日志文件名
#ifdef WIN32
#define DFT_LOGPATH ".\\log" //默認日志文件路徑
#else
#define DFT_LOGPATH "./log" //默認日志文件路徑
#endif
#define VAL_DISPLAYBUF_LEN 5120 //顯示緩存長度
#define MAX_LOGFILENAME_LEN 300 //最大文件名長(包括路徑長)
#define MAX_LOGPATH_LEN 200 //最大路徑長度
#define MAX_MYLIB_FILENAME_LEN 1024 //最大文件名長度
/* ----------------------------------------------------------------------------
日志信息處理類
Platform : Solaris/Linux
Written : 2003/02/17 楊廣煜
Revision : 1.0
Copyright (C) 2000-2003 Sxit Co.Ltd All rights reserved.
-----------------------------------------------------------------------------*/
FILE* mdfopen(const INT8* pFileName, const INT8* sMode);
class CWriteLog
{
enum { MAX_FILE_LEN = 5000000 }; //最大文件長度
enum { DFT_LOGLEVEL = 4, MAX_LOGLEVEL = 5 }; //默認/最大記日志級別
enum { DFT_BAKLOGNUM= 99, MAX_BAKLOGNUM = 99 }; //默認/最大備份日志個數
enum { DFT_EXPIRED_DAY= 30 }; //默認日志有效期
enum { DFT_QUEUE_NUM= 50 }; //日志隊列初始節點數與節點長度
enum { MAX_FILE_NUM = 50 }; //最大支持不同類日志數
enum { MAX_WAIT_COUNT= 10 }; //日志文件空等次數,超過關閉
enum { MAX_MEM_SIZE= 5000 }; //最大緩存大小(單位:K)
typedef struct SLogMessage
{
UINT8 cFileFlag; //寫入文件標記
UINT8 cLogLevel; //日志級別
UINT8 cLogType; //信息類型
INT8 sLogContent[ VAL_DISPLAYBUF_LEN ]; //日志內容
} SLogMessage;
protected:
INT8 (*m_asLogFile)[ MAX_LOGFILENAME_LEN ]; //日志文件名表
INT8 m_sFilePath[ MAX_LOGPATH_LEN ]; //日志路徑
struct tm* m_alFileTime; //日志文件操作日期表
UINT8 m_iMaxLogTag; //日志使用最大下標
UINT32 m_lMaxFileSize; //文件最大大小BYTE
BOOL m_bLogFlag; //日志開關
INT16 m_iLogBakNum; //每類日志備份日志數目
UINT32 m_lLogExpiredDay; //日志有效期(天)
const time_t* m_pSystemTime; //系統時間指針
const struct tm* m_pLocalTime; //系統時間指針
CMyQueue* m_oQueue; //日志信息隊列
BOOL m_bExitFlag; //日志系統退出標記
public:
INT16 m_iLogLevel; //日志級別
static INT16 m_iPrintLevel; //打印級別
protected:
//取得備份日志文件命名用的序列號(1-m_iLogBakNum)
//如果有未使用的序號,使用最小的未使用序號
//沒有未使用序號,使用最早修改的文件的序號(則據此序列號命名的原文件將被覆蓋)
INT16 GetSerial( UINT8 cFileFlag );
//打開日志文件
FILE* OpenLogFile( UINT8 cFileFlag );
//得到當前時間字符串
INT16 GetTimeString(INT8* sTime);
//寫日志線程
static MYTYPE_THREAD_FUNC thWritingThread(void* pParam);
public:
//添加日志信息到記日志隊列
//cLogTag 為日志文件標記
INT16 AddLogMessage(const UINT8 cLogTag, const INT16 iLogLevel, const INT8* sFormat, ...);
//添加日志信息到記日志隊列, 為直接調用與包裝調用提供接口
//cLogTag 為日志文件標記
INT16 AddLogMessage(const INT8* sFormat, const va_list args, const UINT8 cLogTag, const INT16 iLogLevel );
//設置日志開關
INT16 SetLogOpen(const INT16 iFlag);
//設置備份日志數量
INT16 SetLogBakNum(const INT16 iNum);
//設置日志文件名
INT16 SetLogFile( const INT8* sLogFile, const UINT8 cFileTag );
INT16 PrintLogFile();
//設置日志文件路徑
INT16 SetLogPath( const INT8* sLogPath );
//設置日志級別
INT16 SetLogLevel(const INT16 iLogLevel);
//設置日志保存時間
INT16 SetLogExpiredDay( const INT16 iExpiredDay );
//設置系統時間指針,一定要在對象啟動前設置
INT16 SetTimeReference( const time_t* pSystemTime, const struct tm* pLocalTime );
INT16 Start( const UINT32 lMaxSizeK= MAX_MEM_SIZE, const UINT32 lMaxFileSize= MAX_FILE_LEN ); //對象系統起動
INT16 Shut(); //對象系統關閉
UINT32 GetUsedNodeNum() { return m_oQueue->GetUsedSum(); };
UINT32 GetFreeNodeNum() { return m_oQueue->GetFreeSum(); };
UINT32 GetTotalNodeNum() { return ( m_oQueue->GetUsedSum() + m_oQueue->GetFreeSum() ); };
CWriteLog();
~CWriteLog();
// friend class CRunningParam; //負責對象參數初始化
};
//////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
}
#endif
//////////////////////////////////////////////////////////////////////
#endif // ifndef __WRITELOG_H__
//////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -