CLog一个用于记录日志的类
发表于:2007-07-01来源:作者:点击数:
标签:
#ifndef _LOG_H #define _LOG_H class CLog { public: CLog(); ~CLog(); public: voidInitLog(LPCTSTR lpszLogPath); voidAdd(const char* fmt, ...);//输出文字,参数就跟printf一样 protected: enum {BUFSIZE = 3000}; //工作缓冲区 charm_tBuf[BUFSIZE];
#ifndef _LOG_H #define _LOG_H
class CLog { public: CLog(); ~CLog();
public: void InitLog(LPCTSTR lpszLogPath); void Add(const char* fmt, ...); //输出文字,参数就跟printf一样 protected: enum {BUFSIZE = 3000}; //工作缓冲区 char m_tBuf[BUFSIZE]; CString m_strLogPath; CRITICAL_SECTION m_crit; //设置一个临界区 };
#endif |
#include "stdafx.h" #include "log.h"
CLog::CLog() //构造函数,设置日志文件的默认路径 { ::InitializeCriticalSection(&m_crit); //初始化临界区 }
CLog::~CLog() { ::DeleteCriticalSection(&m_crit); //释放里临界区 }
/*================================================================ * 函数名: InitLog * 参数: LPCTST lpszLogPath * 功能描述: 初始化日志(设置日志文件的路径) * 返回值: void * 作 者: 程红秀 2005年01月06日 ================================================================*/ void CLog::InitLog(LPCTSTR lpszLogPath) { m_strLogPath=lpszLogPath; }
void CLog::Add(const char* fmt, ...) { if (m_strLogPath.IsEmpty()) return ; if (!AfxIsValidString(fmt, -1)) return ; /*-----------------------进入临界区(写文件)------------------------------------*/ ::EnterCriticalSection(&m_crit); try { va_list argptr; //分析字符串的格式 va_start(argptr, fmt); _vsnprintf(m_tBuf, BUFSIZE, fmt, argptr); va_end(argptr); } catch (...) { m_tBuf[0] = 0; } FILE *fp = fopen(m_strLogPath, "a"); //以添加的方式输出到文件 if (fp) { fprintf(fp,"%s: ", AfxGetApp()->m_pszExeName); //加入当前程序名 CTime ct ; //加入当前时间 ct = CTime::GetCurrentTime(); fprintf(fp,"%s : ",ct.Format("%m/%d/%Y %H:%M:%S")); fprintf(fp, "%s\n", m_tBuf); fclose(fp); } ::LeaveCriticalSection(&m_crit); /*-------------------退出临界区----------------------------------------*/ }
|
原文转自:http://www.ltesting.net