- 论坛徽章:
- 0
|
最近在做MODEM串口编程,对于日志一直没有想到好的方法去实现,今天偶尔看到MINICOM源码中对于写一行日志的实现方法,顿感很妙,用了和printf相似的方法,很方便,贴出如下:
#include
void do_log(char *line, ...)
{
#ifdef LOGFILE
/* Write a line to the log file. jl 22.06.97 */
FILE *logfile;
#ifdef _HAVE_MACROS
char *logname = pfix_home(logfname);
#else
char *logname = logfname;
#endif
struct tm *ptr;
time_t ttime;
va_list ap;
if (logfname[0] == 0) return;
logfile = fopen(logname,"a");
if (!logfile) return;
va_start(ap, line);
ttime=time(NULL);
ptr=localtime(&ttime);
fprintf(logfile,"%04d%02d%02d %02d:%02d:%02d ",
(ptr->tm_year)+1900,(ptr->tm_mon)+1,ptr->tm_mday,
ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
vfprintf(logfile, line, ap);
fprintf(logfile, "\n");
fclose(logfile);
#else
/* dummy, don't do anything */
#endif
}
在调用时候,与使用printf一样方便,是不是很强大,呵呵,而且加入了记录日志的时间。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/105037/showart_2080467.html |
|