/************************************************************* /* Copyright (C), 2008-2010, StoneU Tech. Co., Ltd. /* 文件名: Log.h /* 作者: Jesse /* 创建日期: 2010-07-16 /* 版本号: V1.0 /* 描述: 对Log4cpp日志进行封装 /* 其它: /* 主要类模块: CLog类,维护一个m_pLog静态指针,所有日志操作都必须通过该指针 /* 历史修改记录: /* 作者 时间 版本 描述 /* Jesse 10/07/16 1.0 创建这个模块 ***************************************************************/ #ifndef _LOG_H #define _LOG_H #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 extern "C" { #include "log4c.h" } namespace SToneULog { #define LOG4C_BUFFER_SIZE_MAX 1024*10 static int g_nLogNum = 0; static log4c_category_t* g_pRoot = NULL; class CLog { private: //static CLog* m_pLog; const char *m_pFileName; const char *m_pFuncName; int m_nLinNo; public: CLog(const char *pFileName, const char *pFuncName, int nLineNo): m_pFileName(pFileName), m_pFuncName(pFuncName), m_nLinNo(nLineNo) { } ~CLog() { }; //static CLog* GetInstancePtr(); //static CLog GetInstance(const char *pFileName, const char *pFuncName, int nLineNo); //int CreateLog(char chLogPath[MAX_PATH]=""); //void DestroyLog(); //void Output(const char *pFormat, ...); void operator()(const char *pszFmt, ...) const { char strMsgBuffer[LOG4C_BUFFER_SIZE_MAX] = {0}; va_list va; sprintf( strMsgBuffer, "%d Function %s at line %d in file %s;", ++g_nLogNum, m_pFuncName, m_nLinNo, m_pFileName ); strncat( strMsgBuffer, pszFmt, strlen(pszFmt) + 2 ); va_start(va, pszFmt); log4c_category_vlog(g_pRoot, LOG4C_PRIORITY_ERROR, strMsgBuffer, va); va_end(va); } void operator()(const wchar_t *pszFmt, ...) const { va_list ptr; va_start(ptr, pszFmt); va_end(ptr); } }; }; #define LOG4C SToneULog::CLog(__FILE__, __FUNCTION__, __LINE__) #endif