我的CLog的实现

原创 2003年07月07日 09:48:00

改编于一个老外的同名作品。

############  log.h #################

//===========================================================================
//
// HomeWork from Belgium   Not licensed software 
// 1999 - 2000      No rights reserved
//
//===========================================================================
//
// Project/Product : Iconizer DLL
//  FileName  : log.h
// Author(s)  : Bart Gysens
//
// Description  : Declaration of CLog class
//
// Classes   : CLog
//
// Information  :
//   Compiler(s) : Visual C++ 6.0
//   Target(s)  : Windows 95/98 and Windows NT (x86)
//   Editor  : Visual C++ 6.0 internal editor
//
// History
// Vers.  Date        Aut.  Type     Description
//  -----  ----------  ----  -------  -----------------------------------------
// 1.00   22 05 1999  BG    Create   Original
//  1.01   20 12 2000  hewen Add
//  1.03   24 10 2001  hewen Add
//  1.04   10 06 2003  hewen Add
//===========================================================================

#ifndef _LOG_H_INCLUDED__
#define _LOG_H_INCLUDED__

//===========================================================================
// Macros and typedefs
//===========================================================================


//===========================================================================
//
// Class   : CLog
// Author(s)  : Bart Gysens
//
// Description  : Declaration of the CLog class
//
// Comments  : none
//
// History   : 1.00  : Create
//                      1.01  : hewen Add
//                      1.03  : hewen Add
//                      1.04  : hewen Add
//===========================================================================

class CLog
{
 // Member functions
 public:
 CLog();

 public:
 static void PutLog( LPCTSTR pFmt, ... );
 
//1.01
 static void SetFile(LPCTSTR FileName);
//1.03
 static void Delete(void);
//1.04
 static void PutLogBinary(VOID *pMem,DWORD Length,BOOL bTxt);
 static void MessageBox( LPCTSTR pFmt, ... );


};

#endif // _LOG_H_INCLUDED__

 

############  log.cpp #################

//===========================================================================
//
// HomeWork from Belgium   Not licensed software 
// 1999 - 2000      No rights reserved
//
//===========================================================================
//
// Project/Product : Iconizer DLL
//  FileName  : log.cpp
// Author(s)  : Bart Gysens
//
// Description  : Declaration of CLog class
//
// Classes   : CLog
//
// Information  :
//   Compiler(s) : Visual C++ 6.0
//   Target(s)  : Windows 95/98 and Windows NT (x86)
//   Editor  : Visual C++ 6.0 internal editor
//
// History
// Vers.  Date        Aut.  Type     Description
//  -----  ----------  ----  -------  -----------------------------------------
// 1.00   22 05 1999  BG    Create   Original
//  1.01   20 12 2000  hewen Add
//  1.03   24 10 2001  hewen Add
//  1.04   16 06 2003  hewen Add      My BirthDay
//===========================================================================

#include "stdafx.h"
#include "stdio.h"
//1.01
#include "stdlib.h"
#include "log.h"

//===========================================================================
// Macros and typedefs
//===========================================================================

//===========================================================================
//
// Class   : CLog
// Author(s)  : Bart Gysens
//
// Description  : Declaration of the CLog class
//
// Comments  : none
//
// History   : 1.00  : Create
//                      1.01  : hewen Add
//                      1.03  : hewen Add
//                      1.04  : hewen Add
//===========================================================================

//1.01
static char gLogFileName[_MAX_PATH] = "LOG.TXT";

CLog::CLog()
{
}

void CLog::PutLog( LPCTSTR pFmt, ... )
{
//1.02
#ifdef _DEBUG_LOG

 FILE * pFile;
//1.01
 pFile = fopen( gLogFileName, "ab" );
//1.00
// pFile = fopen( "C://LOG.TXT", "a" );

 if ( pFile != NULL )
 {
  va_list arg;
  va_start( arg, pFmt );
  vfprintf( pFile, pFmt, arg );
  va_end( arg );
  fclose( pFile );
 }
#endif
}

//1.01
void CLog::SetFile(LPCTSTR FileName)
{
//1.02
#ifdef _DEBUG_LOG
 strncpy(gLogFileName,FileName,_MAX_PATH);
#endif
}

//1.03
void CLog::Delete(void)
{
#ifdef _DEBUG_LOG
 DeleteFile(gLogFileName);
#endif
}

//1.04
void CLog::PutLogBinary(VOID *pMem,DWORD Length,BOOL bTxt)
{
#ifdef _DEBUG_LOG
 FILE * pFile;
 int Row, r, i, j;

 if(pMem == NULL || Length <= 0)
  return;

 pFile = fopen( gLogFileName, "ab" );

 unsigned char *P = (unsigned char *)pMem;

 unsigned char txtBuff[16];

 if ( pFile != NULL )
 {
  if(!bTxt)
  {
   fwrite(P,Length,1,pFile);
  }
  else
  {
   Row = Length / 16;
   r   = Length % 16;

   for(i=0;i<Row;i++)
   {
    fprintf(pFile,"%04x:",i);
    for(j=0;j<16;j++)
    {
     fprintf(pFile,"%c%02X",(j == 8 ? '-' : ' '),*P);
     txtBuff[j] = isgraph(*P) ? *P : '.';
     P ++;
    }

    fprintf(pFile," | ");
    fwrite(txtBuff,16,1,pFile);
    fprintf(pFile,"/r/n");
   }

   fprintf(pFile,"%04x:",Row);
   for(i=0;i<16;i++)
   {
    if(i < r)
    {
     fprintf(pFile,"%c%02X",(j == 8 ? '-' : ' '),*P);
     txtBuff[j] = isgraph(*P) ? *P : '.';
    }
    else
    {
     fprintf(pFile,"   ");
     txtBuff[j] = ' ';
    }
    P ++;
   }

   fprintf(pFile," | ");
   fwrite(txtBuff,16,1,pFile);
   fprintf(pFile,"/r/n");
  }

  fprintf(pFile,"/r/n");
  fclose( pFile );
 }

#endif
}

//1.04
#include "windows.h"
void CLog::MessageBox( LPCTSTR pFmt, ... )
{
#ifdef _DEBUG_LOG
 char buff[1024];
 buff[0] = 0;
 va_list arg;
 va_start( arg, pFmt );
 vsprintf( buff, pFmt, arg );
 va_end( arg );
 AfxMessageBox(buff,MB_OK,0);
#endif
}

 

c++里关于cerr,clog,cout三者的区别

全文转载自:这里 c++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出 clog(缓冲标准错误)--------有缓冲,...
  • YoungDou
  • YoungDou
  • 2015年04月29日 09:03
  • 783

cout/cerr/clog之异同极其重定向

最近刚入手了一本《C++ Primer(第五版)》,开始按照C++0x的标准把之前积累的C++知识重头梳理一遍。在看到“初识输入输出”这一小节时,见书中提到了cout/cerr/clog三个输出对象,...
  • yeosn
  • yeosn
  • 2013年10月22日 14:37
  • 1005

c++中cout、cerr、clog的区别

之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论) 其实大家平常常会用的主要有三个:...
  • bsmmaoshenbo
  • bsmmaoshenbo
  • 2016年03月02日 10:42
  • 1438

cout, cerr, clog的区别和windows下的重定向

1、cout,cerr,clog的区别 《C++ Primer》第四版中解释为:标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个...
  • ML_VISION
  • ML_VISION
  • 2015年07月02日 17:15
  • 1107

CLog做了些许改进

对CLog做了一些改进 andy 2016-9-11 shenzhen 原文来自:http://blog.csdn.net/sunflover454/article/details/49758801 ...
  • tajon1226
  • tajon1226
  • 2016年09月11日 17:14
  • 383

Cts框架解析(20)-cts自身log系统

Log系统 log系统中类图 在cts的log包中。 log系统的入口 入口类为CLog。采用的是代理模式,被代理的类是DDM内部的Log类。 CLog public...
  • qhshiniba
  • qhshiniba
  • 2014年12月22日 15:17
  • 2217

c++中cout、cerr、clog的区别

之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论) 其实大家平常常会用的主要有三个:...
  • wzy_2017
  • wzy_2017
  • 2017年12月07日 09:43
  • 21

C++中cout、cerr、clog的区别

之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论) 其实大家平常常会用的主要有三...
  • gettogetto
  • gettogetto
  • 2016年05月29日 21:31
  • 252

clog,cout,cerr 输出机制

printf() cout 强制输出缓冲区 fflush(stdout) clog:控制输出,使其输出到一个缓冲区,这个缓冲区关联着定义在 的 stderr。 cerr:强制输出刷新,没...
  • qq_32541007
  • qq_32541007
  • 2016年05月20日 19:36
  • 438

c++里关于cerr,clog,cout三者的区别

c++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出 clog(缓冲标准错误)--------有缓冲,缓...
  • zhyh1435589631
  • zhyh1435589631
  • 2014年10月19日 15:33
  • 721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的CLog的实现
举报原因:
原因补充:

(最多只允许输入30个字)