用C实现日志文件的记录
2011-11-03 14:42
357 查看
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <errno.h>
/*宏定义参数*/
#define RecordLogFile(ONE, TWO) defineRecordLogFile(__FILE__, __LINE__, ONE, TWO)
int defineRecordLogFile(char *pszMyFileName, int iLine,\
char *pszMyErroe, const char *pszLogFileName);
int main(int argc, char *argv[])
{
if (argc < 2)
{
RecordLogFile("我自己的输出错误!", "liujie.log");
return 1;
}
return 0;
}
int defineRecordLogFile(char *pszMyFileName, int iLine,\
char *pszMyError, const char *pszLogFileName)
{
FILE *fpLogFile;
time_t timeTemp;
struct tm *pstTime;
pid_t pidMyId;
char szNewLogFileName[64 + 1];
char szSystem[128 + 1];
char szTime[19 + 1];
/*打开文件*/
if ((fpLogFile = fopen(pszLogFileName, "a")) == NULL)
{
printf("open LogFile faile!");
RecordLogFile("open LogFile faile!", "liujie.log");
return 1;
}
/*时间*/
timeTemp = time(NULL);
pstTime = localtime(&timeTemp);
sprintf(szTime, "%2.2d-%2.2d-%2.2d-%2.2d:%2.2d:%2.2d ",\
pstTime->tm_year + 1900,pstTime->tm_mon + 1,\
pstTime->tm_mday,pstTime->tm_hour,pstTime->tm_min,\
pstTime->tm_sec);
fprintf(fpLogFile, szTime);
/*得到文件ID*/
pidMyId = getpid();
fprintf(fpLogFile, "pid = %d ", pidMyId);
/*得到文件位置*/
fprintf(fpLogFile, "%s:%d ", pszMyFileName, iLine);
/*得到错误信息*/
fprintf(fpLogFile, "useerror: %s ", pszMyError);
fprintf(fpLogFile, "error: %s\n", strerror(errno));
/*关闭文件*/
fclose(fpLogFile);
/*调用system实现拷贝*/
memset(szSystem, 0, 128 + 1);
memset(szNewLogFileName, 0, 64 + 1);
/*得到新配置文件名*/
strncpy(szNewLogFileName, pszLogFileName, 64 - 19);
strncat(szNewLogFileName, szTime, 19);
/*得到system参数*/
strncpy(szSystem, "cp ", 3);
strncat(szSystem, pszLogFileName, 64);
strncat(szSystem, " ", 1);
strncat(szSystem, szNewLogFileName, 64);
system(szSystem);
return 0;
}
#include <time.h>
#include <string.h>
#include <errno.h>
/*宏定义参数*/
#define RecordLogFile(ONE, TWO) defineRecordLogFile(__FILE__, __LINE__, ONE, TWO)
int defineRecordLogFile(char *pszMyFileName, int iLine,\
char *pszMyErroe, const char *pszLogFileName);
int main(int argc, char *argv[])
{
if (argc < 2)
{
RecordLogFile("我自己的输出错误!", "liujie.log");
return 1;
}
return 0;
}
int defineRecordLogFile(char *pszMyFileName, int iLine,\
char *pszMyError, const char *pszLogFileName)
{
FILE *fpLogFile;
time_t timeTemp;
struct tm *pstTime;
pid_t pidMyId;
char szNewLogFileName[64 + 1];
char szSystem[128 + 1];
char szTime[19 + 1];
/*打开文件*/
if ((fpLogFile = fopen(pszLogFileName, "a")) == NULL)
{
printf("open LogFile faile!");
RecordLogFile("open LogFile faile!", "liujie.log");
return 1;
}
/*时间*/
timeTemp = time(NULL);
pstTime = localtime(&timeTemp);
sprintf(szTime, "%2.2d-%2.2d-%2.2d-%2.2d:%2.2d:%2.2d ",\
pstTime->tm_year + 1900,pstTime->tm_mon + 1,\
pstTime->tm_mday,pstTime->tm_hour,pstTime->tm_min,\
pstTime->tm_sec);
fprintf(fpLogFile, szTime);
/*得到文件ID*/
pidMyId = getpid();
fprintf(fpLogFile, "pid = %d ", pidMyId);
/*得到文件位置*/
fprintf(fpLogFile, "%s:%d ", pszMyFileName, iLine);
/*得到错误信息*/
fprintf(fpLogFile, "useerror: %s ", pszMyError);
fprintf(fpLogFile, "error: %s\n", strerror(errno));
/*关闭文件*/
fclose(fpLogFile);
/*调用system实现拷贝*/
memset(szSystem, 0, 128 + 1);
memset(szNewLogFileName, 0, 64 + 1);
/*得到新配置文件名*/
strncpy(szNewLogFileName, pszLogFileName, 64 - 19);
strncat(szNewLogFileName, szTime, 19);
/*得到system参数*/
strncpy(szSystem, "cp ", 3);
strncat(szSystem, pszLogFileName, 64);
strncat(szSystem, " ", 1);
strncat(szSystem, szNewLogFileName, 64);
system(szSystem);
return 0;
}
相关文章推荐
- 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件
- VB.net类库中应用log4net实现日志记录(文件形式)
- android上如何实现后台日志记录并写文件到sd卡
- 日志模块(一头文件就实现了日志记录)
- PHP中设置时区,记录日志文件的实现代码
- shell将脚本输出结果记录到日志文件的实现
- 日志模块(一头文件就实现了日志记录)
- android上如何实现后台日志记录并写文件到sd卡
- PHP实现记录日志(文件)
- Java中重定向输出流实现用文件记录程序日志
- android上如何实现后台日志记录并写文件到sd卡
- 日志模块(一头文件就实现了日志记录)
- java 实现日志记录到文件的一个jar包
- PHP中设置时区,记录日志文件的实现代码
- 通过脚本实现从日志文件中提取时间最近的几条记录
- php文件操作实现自定义日志记录
- Linux下实现跟踪程序执行信息记录日志文件
- 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大
- android上如何实现后台日志记录并写文件到sd卡
- Java中重定向输出流实现用文件记录程序日志