• <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>

            牽著老婆滿街逛

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

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

            這個類還不錯的說,希望看到原文的請到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) 評論(0)  編輯 收藏 引用

            狠狠色丁香久久婷婷综合蜜芽五月| 亚洲国产香蕉人人爽成AV片久久| 久久久无码精品亚洲日韩软件| 久久国产精品77777| 麻豆成人久久精品二区三区免费 | 久久婷婷久久一区二区三区| 久久亚洲精品中文字幕| 日韩欧美亚洲综合久久 | 久久丫忘忧草产品| 欧美日韩精品久久久久| 精品久久久久久国产| 亚洲欧美伊人久久综合一区二区| 久久亚洲精品人成综合网| 精品熟女少妇av免费久久| 久久久久四虎国产精品| 久久狠狠色狠狠色综合| 久久99精品国产麻豆蜜芽| 久久久久亚洲精品天堂久久久久久| 精品久久久久久无码中文野结衣| 久久久久亚洲国产| 四虎国产永久免费久久| 久久精品国产一区二区三区日韩| 久久最新免费视频| 久久99这里只有精品国产| 国产精品岛国久久久久| 久久无码国产专区精品| 久久综合中文字幕| 中文精品久久久久人妻不卡| 日韩精品久久无码人妻中文字幕| 麻豆精品久久精品色综合| 性做久久久久久久久老女人| 久久精品国产免费观看三人同眠| 99久久久精品免费观看国产| 久久久久久久97| 久久99热精品| 性高湖久久久久久久久| 伊人久久大香线蕉无码麻豆| 久久精品国产精品亚洲毛片| 久久成人18免费网站| 久久国产精品99精品国产| 国产精品久久久久久五月尺|