• <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ò)的說,希望看到原文的請到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 楊粼波 閱讀(2773) 評論(0)  編輯 收藏 引用


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


            久久99国产精一区二区三区| 国产精品久久久久久五月尺| 国内精品久久久久| 久久精品嫩草影院| 久久精品国产亚洲αv忘忧草| 久久久无码一区二区三区| 久久婷婷五月综合97色直播| 色综合久久无码五十路人妻| 国产成人久久精品麻豆一区| 色欲久久久天天天综合网精品| 精品无码久久久久久久动漫| 亚洲va久久久噜噜噜久久天堂| 精品久久久久久国产免费了| 久久国产免费观看精品3| 亚洲国产精品成人久久蜜臀 | 久久精品国产影库免费看| 国产精品久久久久免费a∨| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 婷婷久久综合九色综合98| 狠狠色丁香婷婷久久综合| 国产精品久久久久久久久久免费| 久久综合狠狠综合久久综合88| 伊人色综合久久天天网 | 热re99久久精品国99热| 中文字幕无码久久人妻| 精品久久久久久无码中文字幕| 久久成人国产精品| 欧美一区二区三区久久综| 久久九九兔免费精品6| 伊人色综合久久天天网| 日本精品久久久久影院日本| 91久久精品国产成人久久| 欧美精品一区二区精品久久 | 无码人妻少妇久久中文字幕| 久久九九亚洲精品| 香蕉久久夜色精品国产小说| 亚洲狠狠久久综合一区77777| 久久99国产精一区二区三区| 国产精品久久久久影院色| 色综合合久久天天综合绕视看| 国产91久久精品一区二区|