我的CLog的实现

发表于:2007-07-01来源:作者:点击数: 标签:
改编于一个老外的同名作品。 ############ log.h ################# //=========================================================================== // //HomeWork from BelgiumNot licensed software //1999 - 2000No rights reserved // //============

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

############  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
}

 


原文转自:http://www.ltesting.net