?? superlog.h
字號(hào):
// *************************************************************
// Copyright (C) 2000-2009,Seuu Technologies Co., Ltd.
//
// File name : SuperLog.h
// Description: 性能要比較高,
// 能寫(xiě)char*,string,CString,bin
// 有線程,能主動(dòng)寫(xiě)
// 三到四秒一次,可配的,
// 寫(xiě)日志可分級(jí)別,可調(diào)控的。
// 日志文件有多個(gè),輪換寫(xiě)
// Version : 1.0
// Author : Seuu
// Created : 2009-05-04 22:54:18
// *************************************************************
#pragma once
const int MAX_BIN_LOG_INFO_LEN = 30*1024+1;
const int MAX_STR_LOG_INFO_LEN = 3*1024+1;
const int MAX_LOG_FILE_LEN = 5*1024*1024;
//const int MAX_LOG_FILE_LEN = 5*1024/**1024*/;
// 日志文件最多可以寫(xiě)多少個(gè)
#define MAX_LOG_FILE_COUNT 3
#define WRITE_LOG CSuperLog::WriteLog
#define LOG_LEVEL_DEBUG CSuperLog::ENUM_LOG_LEVEL_DEBUG
#define LOG_LEVEL_RUN CSuperLog::ENUM_LOG_LEVEL_RUN
#define LOG_LEVEL_ERROR CSuperLog::ENUM_LOG_LEVEL_ERROR
#define WELCOME_LOG_INFO _T("\r\nSuper Logger Version 1.0\r\n")
class CSuperLog
{
private:
// 日志寫(xiě)入器的狀態(tài)
enum enLogStatus
{
ENUM_LOG_INIT,
ENUM_LOG_RUN,
ENUM_LOG_EXITING,
ENUM_LOG_EXITED,
ENUM_LOG_INVALID,
};
static CRITICAL_SECTION m_csWriteLog; // 寫(xiě)日志的臨界變量
static int m_iCurLogFileSeq; // 當(dāng)前正在寫(xiě)入的文件序列號(hào)
static CString m_strWriteStrInfo; // 待寫(xiě)入str
static int m_iWriteBinLogLen; // 當(dāng)前待寫(xiě)入的bin日志字節(jié)長(zhǎng)度
static CStdioFile* m_pFile; // 文件指針
static int m_iMaxLogFileLen; // 單個(gè)文件最大長(zhǎng)度
static HANDLE m_hThread; // 線程句柄
static unsigned m_uiThreadID; // 線程id
static enLogStatus m_enStatus; // 當(dāng)前l(fā)og寫(xiě)入器的狀態(tài)
static bool m_bRun; // 當(dāng)前l(fā)og寫(xiě)入器是否結(jié)束
static int m_iLogLevel; // 當(dāng)前寫(xiě)日志的級(jí)別
static HANDLE m_hMapLogFile; //映射到共享內(nèi)存中
static LPTSTR m_psMapAddr; //映射到共享內(nèi)存到程序內(nèi)存的地址
public:
// 日志級(jí)別
enum enLogInfoLevel
{
ENUM_LOG_LEVEL_DEBUG = 0,
ENUM_LOG_LEVEL_RUN,
ENUM_LOG_LEVEL_ERROR,
};
CSuperLog(void);
~CSuperLog(void);
static unsigned __stdcall LogProcStart( void* pParam );
static enLogStatus OpenLogFile();
static int WriteLogToFile();
static CString& GetCurTimeStr();
static int WriteUnicodeHeadToFile(CFile * pFile);
static int GetLogLevelShareMem(); // 取得當(dāng)前的日志級(jí)別
static int SetLogLevelShareMem(int iLevel); // 設(shè)置當(dāng)前的日志級(jí)別
static int OperaterConfig(BOOL bSave); // 把當(dāng)前級(jí)別寫(xiě)到配置文件中
static int CheckLogLevel(); // 從共享內(nèi)存中讀配置并設(shè)置當(dāng)前的日志級(jí)別
// 重載不同類(lèi)型消息的寫(xiě)日志函數(shù)
#ifdef _DEBUG
static int WriteLog(CString &strLog, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_DEBUG, bool bForce = false);
static int WriteLog(TCHAR* pstrLog, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_DEBUG, bool bForce = false);
static int WriteLog(char* pszLog, int nLen, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_DEBUG, bool bForce = false);
#else
static int WriteLog(CString &strLog, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_RUN, bool bForce = false);
static int WriteLog(WCHAR* pstrLog, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_RUN, bool bForce = false);
static int WriteLog(char* pszLog, int nLen, enLogInfoLevel enLevel = ENUM_LOG_LEVEL_RUN, bool bForce = false);
#endif
};
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -