• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            從CodeProject那里找到并且剝離出來的一個(gè)Trace Log類

            這個(gè)類還不錯(cuò)的說,希望看到原文的請(qǐng)到CodeProject去看,原文地址是:
            http://www.codeproject.com/debug/logtrace.asp

            下面我把源代碼放上來.
            ////////////////////////////////////////////////////////////////////////
            //??LogTrace.cpp?--?Interface?for?the?CLogTrace?class
            //??A?class?to?do?debug?logging


            #ifndef?__LOGTRACE_H__
            #define?__LOGTRACE_H__

            class?CLogTrace
            {
            //?Construction/Destruction
            public:
            ????CLogTrace();
            ????
            ~CLogTrace();


            //?Attributes
            public:
            ????CString?m_strAppName;

            protected:
            ????BOOL?m_bActive;
            ????CString?m_strFileName;
            ????BOOL?m_bTimeStamp;

            //?Operations
            public:
            ????
            void?WriteLine(LPCTSTR?szLine);
            ????
            void?WriteLine(LPCTSTR?szFormat,?LPCTSTR?szAddInfo);
            ????
            void?WriteLine(LPCTSTR?szFormat,?int?nAddInfo);
            ????
            void?ResetFile();
            ????
            void?OnStartup(BOOL?bActive,?BOOL?bTimeStamp);
            ????
            void?SetFileName(LPCTSTR?szFileName);


            protected:



            //?Inlines
            public:
            ????inline?
            void?SetActive(BOOL?bSet)
            ????
            {
            ????????m_bActive?
            =?bSet;
            ????}

            ????inline?CString?GetFileName()
            ????
            {
            ????????
            return?m_strFileName;
            ????}

            }
            ;


            #endif?//?__LOGTRACE_H__

            ?

            ?

            ////////////////////////////////////////////////////////////////////////
            //??LogTrace.cpp?--?Implementation?of?the?CLogTrace?class


            #include?
            "stdafx.h"
            #include?
            <afxdisp.h>
            #include?
            "LogTrace.h"

            /**************************************************

            ?How?to?use?CLogTrace

            ????1.??Make?a?static?CLogTrace?object?as?a?member?of?the?application?class

            ????2.????Add?the?following?lines?to?the?InitInstance?of?the?program

            ????
            ????m_LogTrace.m_strAppName?=?"MyApp";?//?use?appropriate?name?here

            ????m_LogTrace.SetFileName("Log.txt");?//?sets?the?log?file?name?and?puts?it?in?the?exe?path

            ????m_LogTrace.OnStartup(TRUE,?TRUE);?//?activates?the?log?trace

            ????3.??Also?in?InitInstance,?add?the?following?line?if?you?want?to?empty?the?log?file
            ????each?time?the?application?starts
            ????
            ????m_LogTrace.ResetFile();


            ????4.??Any?time?you?want?to?write?to?the?log?file,?use?the?CLogTrace::WriteLine?functions
            ????these?will?write?the?text?along?with?date?and?time


            ******************************************************
            */




            //////////////////////////////////////////////////////
            //??Construction/Destruction

            CLogTrace::CLogTrace()
            {
            ????m_bActive?
            =?FALSE;
            ????m_bTimeStamp?
            =?TRUE;

            ????CString?s;
            }



            CLogTrace::
            ~CLogTrace()
            {


            }


            ////////////////////////////////////////////////////////
            //??CLogTrace?operations


            void?CLogTrace::ResetFile()
            {
            ????CStdioFile?f;
            ????CFileException?fe;
            ????CString?s;

            ????
            if?(m_strFileName.IsEmpty())?return;

            ????
            if?(f.Open(m_strFileName,?CFile::modeWrite?|?CFile::modeCreate,?&fe)?==?FALSE)
            ????
            {
            ????????
            return;
            ????}


            ????f.Close();
            }




            //?bActive?tells?us?if?we?want?the?trace?to?be?active?or?not
            //?bTimeStamp?tells?us?if?we?want?time?stamps?on?each?line
            //?eliminating?the?time?stamp?allows?us?to?use?this?class?for?a?regular?log?file
            void?CLogTrace::OnStartup(BOOL?bActive,?BOOL?bTimeStamp)
            {
            ????m_bActive?
            =?bActive;
            ????m_bTimeStamp?
            =?bTimeStamp;
            ????
            if?(bTimeStamp?==?FALSE)?return;
            ????CString?s;

            ????
            //?these?***'s?help?to?indicate?when?one?ru?of?the?program?ends?and?another?starts
            ????
            //?because?we?don't?always?overwrite?the?file?each?time

            ????WriteLine(
            "\n\n******************************************\n\n");
            ????s.Format(
            "%s?Log?Trace?%s\n\n",?m_strAppName,?COleDateTime::GetCurrentTime().Format());
            ????WriteLine(s);
            }




            //?function?to?write?a?line?of?text?to?the?log?file
            void?CLogTrace::WriteLine(LPCTSTR?szLine)
            {
            ????CStdioFile?f;
            ????CFileException?fe;
            ????CString?s;

            ????
            if?(m_bActive?==?FALSE)?return;
            ????
            if?(m_strFileName.IsEmpty())?return;

            ????
            if?(f.Open(m_strFileName,?CFile::modeWrite?|?CFile::modeCreate?|
            ????????CFile::modeNoTruncate,?
            &fe)?==?FALSE)
            ????
            {
            ????????
            return;
            ????}


            ????
            try
            ????
            {
            ????????f.SeekToEnd();
            ????????TRACE(
            "LOGGIN?%s\n",?szLine);
            ????????
            if?(m_bTimeStamp)
            ????????
            {
            ????????????s.Format(
            "%s\t%s\n",?COleDateTime::GetCurrentTime().Format(),
            ????????????????szLine);
            ????????}

            ????????
            else
            ????????
            {
            ????????????s.Format(
            "%s\n",?szLine);
            ????????}

            ????????f.WriteString(s);
            ????}

            ????
            catch?(CException*?e)
            ????
            {
            ????????e
            ->Delete();
            ????}

            ????f.Close();
            }


            //?function?to?write?a?line?of?text,?with?an?extra?string
            void?CLogTrace::WriteLine(LPCTSTR?szFormat,?LPCTSTR?szAddInfo)
            {
            ????
            if?(m_bActive?==?FALSE)?return;
            ????CString?s;
            ????s.Format(szFormat,?szAddInfo);
            ????WriteLine(s);
            }



            //?funtion?to?write?a?line?of?text?with?an?extra?integer
            void?CLogTrace::WriteLine(LPCTSTR?szFormat,?int?nAddInfo)
            {
            ????
            if?(m_bActive?==?FALSE)?return;
            ????CString?s;
            ????s.Format(szFormat,?nAddInfo);
            ????WriteLine(s);
            }



            //?function?to?set?the?log?file?name.??don't?pass?a?fill?path!
            //?just?pass?something?like?"log.txt"
            //?the?file?will?be?placed?in?the?same?dir?as?the?exe?file
            void?CLogTrace::SetFileName(LPCTSTR?szFileName)
            {
            ????TCHAR?drive[_MAX_PATH],?dir[_MAX_PATH],?name[_MAX_PATH],?ext[_MAX_PATH];

            ????
            const?char?*path?=?_pgmptr?;

            ????_splitpath(path,?drive,?dir,?name,?ext);

            ????m_strFileName.Format(
            "%s%s%s",?drive,?dir,?szFileName);

            }

            posted on 2006-04-18 10:02 楊粼波 閱讀(2772) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            色综合久久中文色婷婷| 伊人久久精品影院| 久久人人爽人爽人人爽av| 伊人久久大香线蕉综合影院首页| 久久久久亚洲AV成人片| 久久精品成人免费观看97| 久久成人国产精品| 久久精品一区二区| 91麻豆国产精品91久久久| 亚洲狠狠久久综合一区77777| 久久SE精品一区二区| 亚洲国产精品成人久久蜜臀| 97视频久久久| 婷婷久久综合九色综合98| 久久人人超碰精品CAOPOREN| 中文字幕无码精品亚洲资源网久久| 国产精品免费福利久久| 久久精品九九亚洲精品| 久久se这里只有精品| 国产2021久久精品| 久久综合综合久久狠狠狠97色88| 久久久久亚洲精品无码网址 | 国产精品久久久天天影视| 精品久久久无码人妻中文字幕| 国产午夜精品理论片久久影视| 亚洲国产精品久久久久婷婷软件 | 欧美午夜精品久久久久免费视| 99久久伊人精品综合观看| 久久国产亚洲精品无码| 囯产极品美女高潮无套久久久| 久久久久久午夜精品| 精品久久久久久久久午夜福利| 久久乐国产综合亚洲精品| 久久午夜免费视频| 国产69精品久久久久观看软件| 尹人香蕉久久99天天拍| 久久精品极品盛宴观看| 久久久www免费人成精品| 亚洲AV日韩AV永久无码久久| 岛国搬运www久久| 精品久久久久中文字|