服务器
先上程序,该程序经过测试能够很好的实现写日志要求
/* > file name: log.c > author: /#include <stdio.h>#include <sys/types.h> #include <unistd.h> #include <stdlib.h>#include <string.h>#include <errno.h>#include <stdarg.h>#include <time.h>#include <pthread.h>int safe_asprintf(char strp, const char *fmt, ...);int safe_vasprintf(char strp, const char *fmt, va_list ap);void plog(const char *format, ...) ;void pinfo(const char *format, ...) ;#define debug#ifdef debugvoid plog(const char *format, ...);void pinfo(const char *format, ...);#define debug(fmt, args...) plog(fmt, ##args) #else#define debug(fmt, args...) do{}while(0)#endifstatic pthread_mutex_t filemutex = pthread_mutex_initializer;int main(int argc, char *argv){ return 0;}/* * safe_asprintf(); */int safe_asprintf(char strp, const char *fmt, ...) { va_list ap; int retval; va_start(ap, fmt); retval = safe_vasprintf(strp, fmt, ap); va_end(ap); return retval;}/* * safe_vasprintf(); */int safe_vasprintf(char strp, const char *fmt, va_list ap) { int retval; retval = vasprintf(strp, fmt, ap); if (retval == -1) { printf(failed to vasprintf: %s. bailing out\\\\n, strerror(errno)); return 1; } return retval;}/* * plog(); */void plog(const char *format, ...) { pthread_mutex_lock(&filemutex); file *fp = null; va_list vlist; char *fmt = null; // open debug info output file. if (!(fp = fopen(log.txt, a ))) { pthread_mutex_unlock(&filemutex); return; } va_start(vlist, format); safe_vasprintf(&fmt, format, vlist); va_end(vlist); if (!fmt) { pthread_mutex_unlock(&filemutex); return; } time_t timep; struct tm *ptm = null; time(&timep); ptm = localtime(&timep); fprintf(fp, [d-d-d-d-d-d] %s, ptm->tm_year 1900, ptm->tm_mon 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, fmt); free(fmt); fsync(fileno(fp)); fclose(fp); pthread_mutex_unlock(&filemutex);}/* * pinfo(); */void pinfo(const char *format, ...) { pthread_mutex_lock(&filemutex); file *fp = null; va_list vlist; char *fmt = null; // open debug info output file. if (!(fp = fopen(log.txt, a ))) { pthread_mutex_unlock(&filemutex); return; } va_start(vlist, format); safe_vasprintf(&fmt, format, vlist); va_end(vlist); if (!fmt) { pthread_mutex_unlock(&filemutex); return; } fprintf(fp, %s, fmt); free(fmt); fsync(fileno(fp)); fclose(fp); pthread_mutex_unlock(&filemutex);}程序实现的日志格式为:
时间 空格 具体实现(自己的调试内容)
本段程序值得学习的地方:
va_list 结构体的使用
linux 的格式化输出字符串
文件操作过程中pthread_mutex锁的使用,以及他的优点
linux debug 的应用,方便调试
linux如何查看日志:
使用tail 命令可以实现日志的查询,以及其他功能,不了解的话,自行查资料解决。
对上面应用不明白的请自行查资料解决。
常见的SEO问题分析申请域名流程是怎样的?有哪些注意点?怎么查域名注册时间?网址域名注册步骤工业互联网助力产业数字化转型 浪潮云洲2.0赋能千行百业网站自购服务器云服务器如何做推广?网站推广的要点有哪些?国外网址域名查询有什么渠道?哪些域名不用备案?建设行业的门户网站要有哪些思路?行业门户网站建设基本要求有哪些?