//#include "stdafx.h"
#ifdef _MSC_VER
#include <windows.h>
#endif
#include "WTLog.h"
#include <stdlib.h>
#include <malloc.h>
#ifndef _MSC_VER
pthread_mutex_t g_Mutex ;
#endif
#ifdef _MSC_VER
CRITICAL_SECTION * g_pCrit;
#endif
FILE * g_pWTLog_File_descriptor;
int LogInit(const char* szLogFileName)
{
errno = 0;
g_pWTLog_File_descriptor = fopen(szLogFileName,"a");
if (NULL == g_pWTLog_File_descriptor)
{
if (EINVAL == errno)
{
printf("err:fopen log file %s failed\n",szLogFileName);
}
else
{
printf("err:unknow\n");
}
return -1;
}
#ifdef _MSC_VER
if( NULL == ( g_pCrit = (CRITICAL_SECTION *)malloc(sizeof(CRITICAL_SECTION)) ) )
{
printf("fatal error\n");
return -1;
}
InitializeCriticalSection(g_pCrit);
#else
pthread_mutex_init(&g_Mutex,NULL);
#endif
return 0;
}
int LogAppend(LOG_LEVEL level,char * fmt,...)
{
//char szlog[MAX_CHAR_ONCE+1] = {0};
//char szHead[8] = {0};
short nHeadLen(0);
int n, size = MAX_CHAR_ONCE;
char *p, *np;
va_list ap;
if ((p = (char*)malloc(size)) == NULL)
return NULL;
while (1)
{
switch(level)
{
case INFO_LEVEL:sprintf(p,"INFO:"); nHeadLen = 5; break;
case WARNING_LEVEL:sprintf(p,"WARNING:"); nHeadLen = 8; break;
case ERROR_LEVEL:
default:sprintf(p,"ERR:"); nHeadLen = 4;
}
va_start(ap, fmt);
n = vsnprintf(p+nHeadLen, size, fmt, ap);
va_end(ap);
strcat(p,"\n");
if (n > -1 && n < size)
{
#ifdef _MSC_VER
EnterCriticalSection(g_pCrit);
#else
pthread_mutex_lock(&g_Mutex );
#endif
fwrite(p,sizeof(char),strlen(p),g_pWTLog_File_descriptor);
#ifdef _MSC_VER
LeaveCriticalSection(g_pCrit);
#else
pthread_mutex_unlock(&g_Mutex );
#endif
break;
}
if (n > -1)
size = n+8;
else
size *= 2;
if ((np = (char*)realloc (p, size)) == NULL)
{
free(p);
return NULL;
}
else
{
p = np;
}
}
return 0;
}
int LogClose()
{
#ifdef _MSC_VER
DeleteCriticalSection(g_pCrit);
free(g_pCrit);
#else
pthread_mutex_destroy(&g_Mutex );
#endif
if(EOF == fclose(g_pWTLog_File_descriptor))
{
printf("err:fclose failed\n");
return -1;
}
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
wtlog.rar (5个子文件)
wtlog
WTLog.cpp 3KB
WTLog.h 1017B
Makefile 3KB
ini.cpp 2KB
buildODFile.cfg 727B
共 5 条
- 1
wt123379493
- 粉丝: 9
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页