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

            glxhyt

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              15 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
              1#ifndef _LOGING_
              2#define _LOGING_
              3#include <iostream>
              4#include <string>
              5#include <fstream>
              6#include <time.h>
              7#include <sys/time.h>
              8#include <cstdlib>
              9#include <sstream>
             10#include <cstdarg>
             11
             12using namespace std;
             13
             14typedef enum en_logleval
             15{
             16    fatal = 0,
             17    error,
             18    warning,
             19    debug
             20
             21}
            logleval_en;
             22
             23typedef struct tag_LogManangeInfo
             24{
             25    int      logleval;
             26    int      logoutype;
             27    string   logfilepath;
             28
             29}
            LogManagementInfo_st;
             30
             31string strFileName;
             32string strFileMainPath;
             33
             34struct timeval t_time;
             35unsigned int __NR_gettid;
             36enum en_logleval leval_t;
             37struct tm *ptm = NULL;
             38
             39LogManagementInfo_st  LogManagementInfo-1-1""};
             40
             41string GetFileMainPath();
             42
             43void LogPrint(int level, char* info,);
             44
             45void LogInit(struct timeval t);
             46
             47void OutPrint(int leval1,
             48              struct timeval t1, unsigned int id1,
             49              string fuction1, int  line1, string file1, char *info1);
             50
             51void LogReture(struct timeval t1, unsigned int id1,
             52              string fuction1, int  line1, string file1,
             53              char *info1);
             54
             55void LogCheckArg(bool bl, struct timeval t1, unsigned int id1,
             56              string fuction1, int  line1, string file1,
             57              char *info1);
             58
             59#define SWITCHLEVEL(level,out)            switch(level) \
             60                                            {    case 0 :\
             61                                                     out<<"Fatal   log: "; \
             62                                                    break;    \
             63                                                 case 1 :\
             64                                                     out<<"Error   log: ";\
             65                                                    break;\
             66                                                 case 2:\
             67                                                     out<<"warning log: ";\
             68                                                     break;\
             69                                                 case 3:\
             70                                                     out<<"debug   log: ";\
             71                                                     break;\
             72                                                 default:\
             73                                                     out<<"Info"<<"["<<level-4<<"]"<<" log: ";\
             74                                                    break;\
             75                                            }
            \
             76
             77#define WRITELOG(out)   ptm = localtime(&t1.tv_sec);\
             78                        out<<ptm->tm_year+1900<<"-"<<ptm->tm_mon+1<<"-"<<ptm->tm_mday;\
             79                        out<<"-"<<ptm->tm_hour<<":"<<ptm->tm_min<<":"<<ptm->tm_sec<<".";\
             80                        out<<t1.tv_usec; \
             81                        file1 = strFileMainPath + file1.substr( file1.find('/') );\
             82                        out<<" "<<id1;\
             83                        out<<" "<<fuction1;\
             84                        out<<" "<<file1;\
             85                        out<<":"<<line1;\
             86                        out<<" "<<"Info: "<<info1<<endl;\
             87
             88#define  LOGINIT struct timeval t;\
             89         gettimeofday(&t, NULL); \
             90         LogInit(t)
             91
             92#define  LOGFATAL(info)  gettimeofday(&t_time, NULL); \
             93                         syscall(__NR_gettid);\
             94                         leval_t = fatal;\
             95                         OutPrint(leval_t, t, __NR_gettid, __FUNCTION__ ,__LINE__, __FILE__, info)
             96
             97#define  LOGERROR(info)  gettimeofday(&t_time, NULL); \
             98                         syscall(__NR_gettid);\
             99                         leval_t = error;\
            100                         OutPrint(leval_t, t, __NR_gettid, __FUNCTION__, __LINE__, __FILE__, info)
            101
            102#define  LOGWARNING(info)  gettimeofday(&t_time, NULL); \
            103                         syscall(__NR_gettid);\
            104                         leval_t = warning;\
            105                         OutPrint(leval_t, t, __NR_gettid, __FUNCTION__, __LINE__,  __FILE__, info)
            106
            107#define  LOGDEBUG(info)  gettimeofday(&t_time, NULL); \
            108                         syscall(__NR_gettid);\
            109                         leval_t = debug;\
            110                         OutPrint(leval_t, t, __NR_gettid, __FUNCTION__, __LINE__, __FILE__, info)
            111
            112#define  LOGINFO(level, info)  gettimeofday(&t_time, NULL); \
            113                         syscall(__NR_gettid);\
            114                         OutPrint(level, t, __NR_gettid, __FUNCTION__, __LINE__,  __FILE__, info)
            115
            116
            117#define  RETURN_NULL     gettimeofday(&t_time, NULL); \
            118                         syscall(__NR_gettid);\
            119                         LogReture( t_time, __NR_gettid, __FUNCTION__, __LINE__, __FILE__, "return 0");\
            120                         LogManagementInfo.logleval = debug;\
            121                         return 0;\
            122
            123#define  RETURN(val)     gettimeofday(&t_time, NULL); \
            124                         syscall(__NR_gettid);\
            125                         LogReture( t_time, __NR_gettid, __FUNCTION__, __LINE__, __FILE__, "return val");\
            126                         LogManagementInfo.logleval = debug;\
            127                         return(val);\
            128
            129#define  LOGCHECKARG(bl, info)     gettimeofday(&t_time, NULL); \
            130                                   syscall(__NR_gettid);\
            131                                   LogCheckArg(bl, t_time, __NR_gettid, __FUNCTION__, __LINE__, __FILE__, info)
            132
            133
            134#endif
            135
              1
              2//============================================================================
              3// Name        : loging.cpp
              4// Author      : 
              5// Version     :
              6// Copyright   : Your copyright notice
              7// Description : Hello World in C++, Ansi-style
              8//============================================================================
              9
             10#include "loging.h"
             11#include <cstdio>
             12#include <string>
             13using namespace std;
             14
             15string GetFileMainPath()
             16{
             17    char buffer[256];
             18    getcwd(buffer, 256);
             19    string strTemp = buffer;
             20    return strTemp;
             21}

             22
             23void LogInit(struct timeval t)
             24{
             25   ifstream out("/home/ganhm/logging/loging.conf");
             26   while(NULL != out)
             27   {
             28     string str;
             29     string begsubstr;
             30     string endsubstr;
             31     getline( out, str, '\n');
             32     unsigned int logbegpos = str.find_first_of('='0);
             33     unsigned int logendpos = str.find_first_of('\0', logbegpos);
             34
             35     begsubstr = str.substr(0, logbegpos);
             36     if(begsubstr == "loglevel")
             37     {
             38         endsubstr = str.substr(logbegpos + 1, logendpos - logbegpos);
             39         if(endsubstr == "fatal")
             40         {
             41             LogManagementInfo.logleval = fatal;
             42         }

             43         else if(endsubstr == "error")
             44         {
             45             LogManagementInfo.logleval = error;
             46         }

             47         else if(endsubstr == "warning")
             48         {
             49             LogManagementInfo.logleval = warning;
             50         }

             51         else if(endsubstr == "debug")
             52         {
             53             LogManagementInfo.logleval = debug;
             54         }

             55         else if((endsubstr.substr(0,4)) == "info")
             56         {
             57            cout<<"endlsubstr "<<endsubstr<<endl;
             58            string strInfoNum = endsubstr.substr(endsubstr.find('['+ 11);
             59            cout<<"strInfoNum "<<strInfoNum<<endl;
             60            int iInfoNum;
             61            stringstream stream;
             62            stream<<strInfoNum;
             63            stream>>iInfoNum;
             64            cout<<"iInfoNum "<<iInfoNum<<endl;
             65            LogManagementInfo.logleval = iInfoNum + 4;
             66            cout<<"LogManagementInfo.logleval "<<LogManagementInfo.logleval<<endl;
             67         }

             68     }

             69    else if(begsubstr == "logouttype")
             70     {
             71         endsubstr = str.substr(logbegpos + 1 , logendpos - logbegpos);
             72         stringstream stream;
             73         int ilogouttype;
             74         stream<<endsubstr;
             75         stream>>ilogouttype;
             76         cout<<"ilogouttype"<<ilogouttype<<endl;
             77           LogManagementInfo.logoutype = ilogouttype;
             78     }

             79    else if(begsubstr == "logfilepath")
             80     {
             81         endsubstr = str.substr(logbegpos +1 , logendpos - logbegpos);
             82         LogManagementInfo.logfilepath = endsubstr;
             83     }

             84
             85   }

             86
             87   if(LogManagementInfo.logleval  == -1)
             88   {
             89       LogManagementInfo.logleval = 2;
             90   }

             91   cout<<"leval"<<LogManagementInfo.logleval<<endl;
             92   if(LogManagementInfo.logoutype == -1)
             93   {
             94       LogManagementInfo.logoutype = 0;
             95   }

             96
             97   cout<<"type"<<LogManagementInfo.logoutype<<endl;
             98   strFileMainPath = GetFileMainPath();
             99   cout<<"FeilManiPath"<<strFileMainPath<<endl;
            100
            101   string strFileNameAfer = strFileMainPath.substr(strFileMainPath.rfind('/'+ 1+ ".log";
            102   if(LogManagementInfo.logfilepath == "")
            103   {
            104       strFileName =  strFileNameAfer;
            105   }

            106   else
            107   {
            108       string strManagementINfoTemp = (LogManagementInfo.logfilepath).substr(0 ,(LogManagementInfo.logfilepath).rfind('/'+ 1);
            109       strFileName = strManagementINfoTemp + strFileNameAfer;
            110   }

            111   cout<<"GETFILENAME   "<<strFileName<<endl;
            112}

            113
            114void OutPrint(int leval1,
            115              struct timeval t1, unsigned int id1,
            116              string fuction1, int line1, string file1, char *info1)
            117{
            118  if(LogManagementInfo.logleval >= leval1)
            119   {
            120       if(LogManagementInfo.logoutype == 0)
            121       {
            122                    SWITCHLEVEL(leval1, cout);
            123                    WRITELOG(cout);
            124        }

            125        else if(LogManagementInfo.logoutype == 1)
            126        {
            127                   ofstream fout(strFileName.c_str(), ios::ate | ios::app );
            128                  SWITCHLEVEL(leval1, fout);
            129                  WRITELOG(fout);
            130        }

            131  }

            132}

            133
            134void LogReture(struct timeval t1, unsigned int id1,
            135              string fuction1, int  line1, string file1,
            136              char *info1)
            137{
            138           if(LogManagementInfo.logoutype == 0)
            139           {
            140                     cout<<"RETURN  log: ";
            141                     WRITELOG(cout);
            142            }

            143        else if(LogManagementInfo.logoutype == 1)
            144            {
            145                   ofstream fout((strFileName.c_str()), ios::ate | ios::app );
            146                   if(fout == NULL)
            147                   {
            148                       cout<<"fout = NULL"<<endl;
            149                   }

            150                   fout<<"RETURN  log: ";
            151                   WRITELOG(fout);
            152            }

            153}

            154
            155void LogCheckArg(bool bl, struct timeval t1, unsigned int id1,
            156                string fuction1, int  line1, string file1,
            157                char *info1)
            158{
            159               if(LogManagementInfo.logoutype == 0)
            160               {
            161                            cout<<"Check   log: ";
            162                            WRITELOG(cout);
            163                            if(bl == true)
            164                            {
            165                                 LogManagementInfo.logleval = error;
            166                              cout<<" 正確"<<endl;
            167                            }

            168                            else
            169                            {
            170                                   LogManagementInfo.logleval = debug;
            171                                cout<<" 錯誤"<<endl;
            172                            }

            173               }

            174                else if (LogManagementInfo.logoutype == 1)
            175                     {
            176                             ofstream fout((strFileName.c_str()), ios::ate | ios::app );
            177                                  cout<<"Check   log: ";
            178                                  WRITELOG(fout);
            179                                if(bl == true)
            180                                {
            181                                        LogManagementInfo.logleval = error;
            182                                    fout<<" 正確"<<endl;
            183                                }

            184                                else
            185                                {
            186                                        LogManagementInfo.logleval = debug;
            187                                    fout<<" 錯誤"<<endl;
            188                                }

            189                    }

            190}

            191void LogPrint(int level, char* info,)
            192{
            193       if(LogManagementInfo.logleval >= level)
            194       {
            195           if(LogManagementInfo.logoutype == 0)
            196           {
            197                    va_list argptr;
            198                    va_start(argptr, info);
            199                    char buffer[256];
            200                    vsprintf( buffer,info,argptr);
            201                    va_end(argptr);
            202                    cout<<"附加信息 log: ";
            203                    cout<<" "<<"Info "<<buffer<<endl;
            204           }

            205           else if(LogManagementInfo.logoutype == 1)
            206           {
            207                 ofstream fout((strFileName.c_str()), ios::ate | ios::app );
            208                    va_list argptr;
            209                    va_start(argptr, info);
            210                    char buffer[256];
            211                    vsprintf( buffer,info,argptr);
            212                    va_end(argptr);
            213                    fout<<"Info"<<endl;
            214                    fout<<"附加信息 log: ";
            215                    fout<<" "<<"Info "<<buffer<<endl;
            216           }

            217       }

            218}

            219
            220
            221
            222
            223
             1#include  "loging.h"
             2#include  <iostream>
             3
             4using namespace std;
             5int fun1();
             6int fun()
             7{
             8    RETURN_NULL;
             9}

            10int fun1()
            11{
            12    RETURN(2);
            13}

            14int main()
            15{
            16    char *pFatalInfo = "Fatal Log";
            17    char *pErrorInfo = "Error Log";
            18    char *pWarringInfo = "Waring Log";
            19    char *pDebugInfo = "Debug Log";
            20    char *pInfo1 = "info1";
            21    char *pInfo2 = "info2";
            22    char *pInfo3 = "info3";
            23    char *= "bool bool";
            24    LOGINIT;
            25
            26
            27
            28//    LOGFATAL(pFatalInfo);
            29//    LOGERROR(pErrorInfo);
            30//    LOGWARNING(pWarringInfo);
            31//    LOGDEBUG(pDebugInfo);
            32//    LOGINFO(0, pInfo1);
            33    LOGINFO(1, pInfo1);
            34    LOGINFO(2, pInfo1);
            35    LOGINFO(3, pInfo1);
            36    LOGINFO(4, pInfo1);
            37    LOGINFO(5, pInfo1);
            38    LOGINFO(6, pInfo1);
            39    LOGINFO(7, pInfo1);
            40    LOGINFO(8, pInfo1);
            41
            42
            43    LogPrint(4,"%d %f %c"11.2'c');
            44
            45    unsigned int __NR_gettid;
            46    syscall(__NR_gettid);
            47    cout<<"__NR_gettid"<<__NR_gettid<<endl;
            48    fun();
            49    fun1();
            50
            51
            52    LOGCHECKARG(false, b);
            53      return 0;
            54}

            55
            posted on 2010-08-19 19:18 郭龍 閱讀(1670) 評論(0)  編輯 收藏 引用
            欧洲人妻丰满av无码久久不卡| 久久亚洲欧美国产精品| 久久精品无码专区免费东京热| 日产精品久久久一区二区| 国产精品99久久免费观看| 国产精品丝袜久久久久久不卡| 久久久久亚洲av毛片大| 久久精品人人做人人爽电影| 久久精品黄AA片一区二区三区| 久久久综合九色合综国产| 性欧美大战久久久久久久| 久久精品人人做人人妻人人玩| 精品国产青草久久久久福利| 国产aⅴ激情无码久久| 久久免费国产精品一区二区| 久久受www免费人成_看片中文| 免费观看成人久久网免费观看| 中文字幕无码久久久| 色综合久久天天综合| 亚洲精品乱码久久久久久久久久久久 | 久久最近最新中文字幕大全| 免费久久人人爽人人爽av| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久99国产乱子伦精品免费| 久久精品国产亚洲精品| 久久九九有精品国产23百花影院| 2021国内久久精品| 性做久久久久久免费观看| 精品久久久久久久久久久久久久久| 久久精品中文无码资源站| 久久WWW免费人成一看片| 国产香蕉久久精品综合网| 午夜福利91久久福利| 国产99久久久国产精免费| 99热成人精品免费久久| 欧美综合天天夜夜久久| 国产精品久久久久无码av | 日本精品久久久久中文字幕| 国产高潮国产高潮久久久| 国产美女亚洲精品久久久综合| 亚洲国产精品无码久久久久久曰|