⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlog.h

📁 BCB的学习资料
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef XLogH
#define XLogH
#include <stdio.h>
#include <SyncObjs.hpp>

#ifndef XDateTimeH
#include <XDateTime.h>
#endif
//---------------------------------------------------------------------------
namespace zdhsoft
{
const int LOG_LEVEL_TRACE = 0;
const int LOG_LEVEL_DEBUG = 1;
const int LOG_LEVEL_INFO  = 2;
const int LOG_LEVEL_ERROR = 3;
const int LOG_LEVEL_FATAL = 4;
//---------------------------------------------------------------------------
/*
///////////////////////////////////////////////////////////////////////////////
[Name]XLog
[Title]系统日志类
///////////////////////////////////////////////////////////////////////////////
[Description]
    新增了一组方法Debug(const AnsiString &);...
                  Info(const AnsiString &);...
    这样可以直接输出AnsiString类型的数据
    新增了三个属性
        DateTimeFlag表示是否要输出日期时间
        LeveFlag表示是否要输出日志级别
        IsSyncFlag表示是否要支持多线程同步
[Version]1.1
[Author]祝冬华
[Date]2005-3-26
///////////////////////////////////////////////////////////////////////////////
[Description]
    这是一个日志类,提供日志输出功能
    主要的方法Trace,Debug,Info,Error,Fatal等五种方法
    在这个类中,定义一个XLog实例全局量Log,通过这个实例输出日志
    例:
        Log.Info("ErrorInput: %s",strErrorInput);
        X_INFO( "ErrorInput" );
        WriteLog(LOG_LEVEL_INFO,"ErrorInput: %s",strErrorInput);
[Version]1.0
[Author]祝冬华
[Date]2004-10-28
///////////////////////////////////////////////////////////////////////////////
*/

class XLog
{
public:
    XLog();
    virtual ~XLog();
    
    void Trace(char * fmt,...);
    void Debug(char * fmt,...);
    void Info (char * fmt,...);
    void Error(char * fmt,...);
    void Fatal(char * fmt,...);

    void Trace(const AnsiString & strMessage);
    void Debug(const AnsiString & strMessage);
    void Info (const AnsiString & strMessage);
    void Error(const AnsiString & strMessage);
    void Fatal(const AnsiString & strMessage);

    void __fastcall __WriteLog(int iLogLevel, char * fmt, va_list arglist);
    void __fastcall __WriteLog(int iLogLevel,const AnsiString & strMessage);
    void CloseLogFileOut(); //关闭日志文件输出
    void OpenLogFileOut();  //打开日志文件输出
    void CloseStringsOut(); //关闭字符串数组输出
    void OpenStringsOut();   //打开字符串数组输出
public:
    __property AnsiString LogFile = {read = m_LogFile, write = m_LogFile };
    __property int Level = {read = m_Level,write = SetLevel };
    __property TStrings * OutStrings= {read = m_OutStrings,write = m_OutStrings}; //在两个以上的线程中,最好不要使和该属性,可能会死锁
    __property int LogFileSize = { read = m_LogFileSize,write = m_LogFileSize };
    __property int MaxLogFileCount = { read = m_MaxLogFileCount, write = m_MaxLogFileCount };
    __property bool IsSyncFlag = { read = m_IsSyncFlag, write = m_IsSyncFlag };
    __property bool DateTimeFlag = { read = m_DateTimeFlag, write = m_DateTimeFlag };
    __property bool LevelFlag = { read = m_LevelFlag, write = m_LevelFlag };    
private:
    void __fastcall SetLevel(int v);
    void CheckLogFile();
private:
    AnsiString m_LogFile;      //日志文件名
    FILE *m_fp;   //日志文件句柄
    bool m_LogFileOut;
    bool m_StringsOut;
    bool m_IsSyncFlag;
    bool m_DateTimeFlag;
    bool m_LevelFlag;
    int  m_Level;
    TStrings * m_OutStrings;
    TCriticalSection * m_SyncFlag;
    int m_LogFileCount;
    int m_LogFileSize;
    int m_MaxLogFileCount; //最大的文件计数,当大于等于这个计数时,m_LogFileCount又将从0开始
};


};
#endif
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -