亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xlog.cpp

?? BCB的學習資料
?? CPP
字號:
//---------------------------------------------------------------------------


#pragma hdrstop

#include "XLog.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
namespace zdhsoft
{

XLog::XLog()
{
    m_LogFileOut = false;
    m_StringsOut = false;
    m_IsSyncFlag = false;
    m_DateTimeFlag = false;
    m_LevelFlag = false;
    m_Level = LOG_LEVEL_DEBUG;
    m_LogFile = "C:\\xlog.log";//default file name
    m_fp = NULL;
    m_OutStrings = NULL;
    m_SyncFlag = new TCriticalSection();
    m_LogFileCount = 0;
    m_LogFileSize = 1024*1024;  //默認大小為1M
    m_MaxLogFileCount = 10;     //默認最大文件計數為10;
}
XLog::~XLog()
{
    if( m_fp != NULL ) fclose(m_fp);
    delete m_SyncFlag;
}
void XLog::Trace(char * fmt,...) 
{
   va_list argptr;
   va_start(argptr, fmt);
   __WriteLog(LOG_LEVEL_TRACE,fmt,argptr);
}
void XLog::Debug(char * fmt,...)
{
   va_list argptr;
   va_start(argptr, fmt);
   __WriteLog(LOG_LEVEL_DEBUG,fmt,argptr);
}
void XLog::Info (char * fmt,...)
{
   va_list argptr;
   va_start(argptr, fmt);
   __WriteLog(LOG_LEVEL_INFO,fmt,argptr);
}
void XLog::Error(char * fmt,...)
{
   va_list argptr;
   va_start(argptr, fmt);
   __WriteLog(LOG_LEVEL_ERROR,fmt,argptr);
}
void XLog::Fatal(char * fmt,...)
{
   va_list argptr;
   va_start(argptr, fmt);
   __WriteLog(LOG_LEVEL_FATAL,fmt,argptr);
}
void XLog::Trace(const AnsiString & strMessage)
{
    __WriteLog(LOG_LEVEL_TRACE,strMessage);
}
void XLog::Debug(const AnsiString & strMessage)
{
    __WriteLog(LOG_LEVEL_DEBUG,strMessage);
}
void XLog::Info (const AnsiString & strMessage)
{
    __WriteLog(LOG_LEVEL_INFO,strMessage);
}
void XLog::Error(const AnsiString & strMessage)
{
    __WriteLog(LOG_LEVEL_ERROR,strMessage);
}
void XLog::Fatal(const AnsiString & strMessage)
{
    __WriteLog(LOG_LEVEL_FATAL,strMessage);
}
void __fastcall XLog::__WriteLog(int iLogLevel,const AnsiString & strMessage)
{
    if( iLogLevel<m_Level || iLogLevel>4 ) return; //如果超出有效范圍,則返回
    if( IsSyncFlag ) m_SyncFlag->Acquire();
    try{
        if( m_LogFileOut == false && m_StringsOut == false ) return; //如果沒有打輸出,則不輸出
        static char *LevelString[] =
        {
            "TRACE",
            "DEBUG",
            " INFO",
            "ERROR",
            "FATAL",
        };
        static const AnsiString LN = "\n";

        if( m_fp != NULL || m_OutStrings != NULL)
        {
            AnsiString strPrompt;
            if( m_DateTimeFlag)
            {
                XDate aDate(Now());
                XTime aTime(Now());
                if( m_LevelFlag )
                {
                    strPrompt.printf("[%04d-%02d-%02d %02d:%02d:%02d.%03d,%s] ",
                        aDate.GetYear(),aDate.GetMonth(),aDate.GetDay(),
                        aTime.GetHour(),aTime.GetMinute(),aTime.GetSecond(),aTime.GetMillis(),
                        LevelString[iLogLevel]
                    );
                }
                else
                {
                    strPrompt.printf("[%04d-%02d-%02d %02d:%02d:%02d.%03d] ",
                        aDate.GetYear(),aDate.GetMonth(),aDate.GetDay(),
                        aTime.GetHour(),aTime.GetMinute(),aTime.GetSecond(),aTime.GetMillis()
                    );
                }
            }
            else
            {
                if( m_LevelFlag )
                {
                    strPrompt.printf("[%s] ",LevelString[iLogLevel]);
                }
                else
                {
                    //do nothing
                }
            }
            //AnsiString strTmp;
            //strTmp.vprintf(fmt,arglist);
            AnsiString strOut;
            strOut.printf("%s%s",strPrompt.c_str(),strMessage.c_str());
            //寫入到文件
            if( m_fp != NULL && m_LogFileOut ){

                CheckLogFile();
                if( m_fp )
                {
                    fwrite(strOut.c_str(),strOut.Length(),1,m_fp);
                    fwrite(LN.c_str(),LN.Length(),1,m_fp);
                    fflush(m_fp);
                }
            }
            //寫入到串數組
            if( m_OutStrings != NULL && m_StringsOut)
            {
                m_OutStrings->Add(strOut);
            }
        }
    }__finally
    {
        if( IsSyncFlag ) m_SyncFlag->Leave();
    }
}
void __fastcall XLog::__WriteLog(int iLogLevel, char * fmt, va_list arglist) 
{
    if( iLogLevel<m_Level || iLogLevel>4 ) return; //如果超出有效范圍,則返回
    if( IsSyncFlag ) m_SyncFlag->Acquire();
    try{
        if( m_LogFileOut == false && m_StringsOut == false ) return; //如果沒有打輸出,則不輸出
        static char *LevelString[] =
        {
            "TRACE",
            "DEBUG",
            " INFO",
            "ERROR",
            "FATAL",
        };
        static const AnsiString LN = "\n";

        if( m_fp != NULL || m_OutStrings != NULL)
        {
            AnsiString strPrompt;
            if( m_DateTimeFlag)
            {
                XDate aDate(Now());
                XTime aTime(Now());
                if( m_LevelFlag )
                {
                    strPrompt.printf("[%04d-%02d-%02d %02d:%02d:%02d.%03d,%s] ",
                        aDate.GetYear(),aDate.GetMonth(),aDate.GetDay(),
                        aTime.GetHour(),aTime.GetMinute(),aTime.GetSecond(),aTime.GetMillis(),
                        LevelString[iLogLevel]
                    );
                }
                else
                {
                    strPrompt.printf("[%04d-%02d-%02d %02d:%02d:%02d.%03d] ",
                        aDate.GetYear(),aDate.GetMonth(),aDate.GetDay(),
                        aTime.GetHour(),aTime.GetMinute(),aTime.GetSecond(),aTime.GetMillis()
                    );
                }
            }
            else
            {
                if( m_LevelFlag )
                {
                    strPrompt.printf("[%s] ",LevelString[iLogLevel]);
                }
                else
                {
                    //do nothing
                }
            }
            AnsiString strTmp;
            strTmp.vprintf(fmt,arglist);
            AnsiString strOut;
            strOut.printf("%s%s",strPrompt.c_str(),strTmp.c_str());
            //寫入到文件
            if( m_fp != NULL && m_LogFileOut ){

                CheckLogFile();
                if( m_fp )
                {
                    fwrite(strOut.c_str(),strOut.Length(),1,m_fp);
                    fwrite(LN.c_str(),LN.Length(),1,m_fp);
                    fflush(m_fp);
                }
            }
            //寫入到串數組
            if( m_OutStrings != NULL && m_StringsOut)
            {
                m_OutStrings->Add(strOut);
            }
        }
    }__finally
    {
        if( IsSyncFlag ) m_SyncFlag->Leave();
    }
}

void XLog::CheckLogFile() 
{
    //not check m_fp && m_LogFileOut
    int iLen = ftell(m_fp);
    if( iLen >= LogFileSize )
    {
        fclose(m_fp);
        AnsiString strTmp;
        if( m_LogFileCount >= m_MaxLogFileCount ) m_LogFileCount = 0;
        strTmp.printf("%s.%d",m_LogFile.c_str(),m_LogFileCount);
        m_LogFileCount++;
        //更換文件名
        if( FileExists( strTmp ) ) DeleteFile(strTmp);
        RenameFile(m_LogFile,strTmp);
        m_fp = fopen(m_LogFile.c_str(),"a");
    }
}
void XLog::CloseLogFileOut()
{
    m_SyncFlag->Acquire();
    m_LogFileOut = false;
    if( m_fp != NULL )
    {
        fclose(m_fp);
        m_fp = NULL;
    }
    m_SyncFlag->Leave();
}
void XLog::OpenLogFileOut()
{
    m_SyncFlag->Acquire();
    m_LogFileOut = true;
    if( m_fp == NULL )
    {
        FILE * fp = fopen(m_LogFile.c_str(),"a");
        if( fp != NULL)
        {
            if( m_fp != NULL ) fclose( m_fp );
            m_fp = fp;
        }
    }
    m_SyncFlag->Leave();
}
void XLog::CloseStringsOut()
{
    m_SyncFlag->Acquire();
    m_StringsOut = false;
    m_SyncFlag->Leave();
}
void XLog::OpenStringsOut()
{
    m_SyncFlag->Acquire();
    m_StringsOut = true;
    m_SyncFlag->Leave();
}

void __fastcall XLog::SetLevel(int v)
{
    if( v < 0 || v > 4 ) return;
    m_Level = v;
}


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区视频免费播放| 日韩精品在线一区二区| 裸体健美xxxx欧美裸体表演| 国产精品天干天干在观线| 欧美一区二区三区在线| 99国产精品一区| 九九国产精品视频| 亚洲18女电影在线观看| 亚洲欧美偷拍卡通变态| 日本一区二区高清| 欧美变态凌虐bdsm| 欧美人狂配大交3d怪物一区| 91免费在线播放| 丁香网亚洲国际| 国产麻豆视频精品| 免费久久精品视频| 日韩国产欧美在线播放| 一区二区三区在线免费播放| 1区2区3区欧美| 亚洲国产精品黑人久久久| 一区二区三区在线免费| 日韩欧美一区二区久久婷婷| 欧美午夜电影网| 99精品国产99久久久久久白柏 | 亚洲视频一区二区在线| 久久婷婷色综合| 日韩亚洲欧美一区二区三区| 欧美日韩一区三区| 色偷偷成人一区二区三区91 | 亚洲女人的天堂| 中文子幕无线码一区tr| 久久久91精品国产一区二区三区| 日韩视频国产视频| 欧美一级黄色片| 日韩亚洲电影在线| 日韩一二三区不卡| 日韩你懂的在线播放| 欧美一区二区三区性视频| 91精品国产高清一区二区三区 | 欧美一区二区人人喊爽| 91精品国产综合久久久久久 | 成人动漫一区二区三区| 成人亚洲一区二区一| 岛国精品一区二区| 成人99免费视频| 97精品电影院| 欧洲色大大久久| 欧美曰成人黄网| 欧美日韩在线亚洲一区蜜芽| 欧美日韩日日摸| 欧美精品99久久久**| 日韩欧美激情一区| 国产日韩三级在线| 中文字幕一区二区三区精华液 | 99精品欧美一区二区三区综合在线| www.色精品| 色哟哟一区二区三区| 欧美乱熟臀69xxxxxx| 日韩亚洲欧美成人一区| 久久久影院官网| 亚洲欧洲性图库| 一二三区精品福利视频| 强制捆绑调教一区二区| 韩国女主播一区二区三区| 国产成人自拍在线| 91免费看`日韩一区二区| 欧美色视频一区| 欧美成人激情免费网| 国产精品国产三级国产aⅴ无密码| 亚洲最新视频在线观看| 琪琪久久久久日韩精品| 国产一区二区免费在线| 色综合中文字幕国产 | 2017欧美狠狠色| 国产精品欧美经典| 亚洲午夜日本在线观看| 久久99久久精品欧美| 成人黄色片在线观看| 欧美精品亚洲一区二区在线播放| 精品99999| 亚洲免费电影在线| 久久精品国内一区二区三区| fc2成人免费人成在线观看播放| 欧美日韩黄色一区二区| 国产日本欧洲亚洲| 亚洲大尺度视频在线观看| 国产毛片精品一区| 欧美日韩中文字幕一区| 欧美国产丝袜视频| 日韩高清在线一区| 成人黄色网址在线观看| 欧美大胆人体bbbb| 一区二区三区在线观看网站| 国产老女人精品毛片久久| 欧美日韩五月天| 亚洲欧美在线另类| 国产综合一区二区| 欧美日韩高清影院| 亚洲同性gay激情无套| 久久99久国产精品黄毛片色诱| 在线视频欧美精品| 国产精品国产三级国产a| 久久精品国产一区二区三| 在线视频亚洲一区| 国产精品久久久久久亚洲伦| 国产在线观看免费一区| 欧美人与性动xxxx| 伊人婷婷欧美激情| 成人丝袜视频网| 精品久久国产字幕高潮| 午夜影视日本亚洲欧洲精品| 99久久国产综合精品女不卡| 久久精品网站免费观看| 精品一区二区三区香蕉蜜桃| 911精品国产一区二区在线| 亚洲品质自拍视频| 不卡电影一区二区三区| 国产色产综合产在线视频| 精品伊人久久久久7777人| 欧美一区二区三区视频免费| 亚洲成人自拍网| 91黄色小视频| 亚洲激情自拍视频| 99国产欧美另类久久久精品| 国产精品美女久久久久久2018| 国产精品亚洲第一区在线暖暖韩国 | 欧美午夜精品久久久久久孕妇 | 中文字幕欧美三区| 精品一区二区三区在线观看| 精品久久久久久久久久久久久久久| 免费成人结看片| 欧美一区二区三区公司| 蜜桃视频第一区免费观看| 日韩一区二区高清| 国内精品伊人久久久久av影院 | 亚洲国产精品久久一线不卡| 色8久久人人97超碰香蕉987| 亚洲男同性恋视频| 欧美在线啊v一区| 亚洲高清免费观看高清完整版在线观看| 日本韩国欧美三级| 亚洲一区二区三区影院| 欧美在线观看视频在线| 婷婷夜色潮精品综合在线| 91麻豆精品国产91久久久更新时间 | 国产一区三区三区| 亚洲国产精品99久久久久久久久| 国产福利一区在线观看| 国产精品视频yy9299一区| 色综合 综合色| 天天爽夜夜爽夜夜爽精品视频| 在线不卡一区二区| 狠狠色综合播放一区二区| 国产午夜亚洲精品不卡| eeuss鲁一区二区三区| 亚洲图片自拍偷拍| 欧美草草影院在线视频| 国产成人福利片| 夜夜嗨av一区二区三区| 欧美一区二区三区电影| 国产大陆a不卡| 亚洲在线免费播放| 日韩三级.com| 国产999精品久久| 亚洲丝袜美腿综合| 日韩视频中午一区| 成人晚上爱看视频| 图片区小说区国产精品视频| 久久综合色8888| 91免费精品国自产拍在线不卡| 天天色图综合网| 久久老女人爱爱| 欧美亚洲图片小说| 国产一区二区三区观看| 亚洲一区二区av电影| 精品乱码亚洲一区二区不卡| 91小视频免费观看| 经典三级在线一区| 亚洲美女在线国产| 久久综合色鬼综合色| 欧美天堂亚洲电影院在线播放| 精品一区二区在线免费观看| 亚洲精品国产第一综合99久久| 日韩欧美国产一区二区三区 | 久久免费看少妇高潮| 91社区在线播放| 狠狠色狠狠色综合| 亚洲国产欧美在线人成| 国产精品亲子伦对白| 日韩欧美在线1卡| 色婷婷激情一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 午夜成人免费电影| 亚洲图片另类小说| 久久综合九色综合97_久久久| 欧洲国内综合视频| 成人a区在线观看| 韩国欧美国产一区| 麻豆精品视频在线观看免费| 亚洲免费高清视频在线|