linux环境应用程序LOG日志打印(C语言)
2013-08-20 09:30
405 查看
下面是前段时间做项目用到的一个输出LOG日志的代码,每个文件最多记录10W行,超过10W行,将当前日志文件重命名,重新再打开。直接看代码吧,很简单!
int InitTCpRtpLog() { char log[256]; mkdir(TCP_RTP_LOG_PATH, 0755); snprintf(log, sizeof(log), "%s/%s", TCP_RTP_LOG_PATH, TCP_RTP_LOG_FILE); vTcpRtpLogHandle = fopen((char*)log, "a"); if (vTcpRtpLogHandle){ PrintMsgTrace("###%s(),creat log file %s sucessfull!\n",__FUNCTION__, log); return 0; }else{ PrintMsgTrace("###$s(), Fail openning event log file (errno=%s)\n", __FUNCTION__, strerror(errno)); return - 1; } } static int _rebuildTcpRtpLogFiles() { char tmp[256]; char tmp2[256]; char date[128]; time_t now; struct tm ptm; if (vTcpRtpLogHandle) { fclose(vTcpRtpLogHandle); time(&now); localtime_r(&now,&ptm); strftime((char *)date, 128, "_%F_%T", &ptm); snprintf(tmp, sizeof(tmp), "%s/%s", TCP_RTP_LOG_PATH, TCP_RTP_LOG_FILE); snprintf(tmp2, sizeof(tmp2), "%s_%s.log", tmp,date); remove(tmp2); rename(tmp, tmp2); vTcpRtpLogHandle = fopen((char*)tmp, "a"); } return 1; } void LogTcpRtp(char *p_fmt, ...) { char date[256]; time_t now; struct tm ptm; va_list ap; if (!vTcpRtpLogHandle){ return; } pthread_mutex_lock(&_vTcpRtpLogMutex); time(&now); // Gets the system time if (localtime_r(&now, &ptm)) { strftime(date, sizeof (date), "%F %T", &ptm); fprintf(vTcpRtpLogHandle, "[ %s ]:", date); va_start(ap, p_fmt); vfprintf(vTcpRtpLogHandle, p_fmt, ap); va_end(ap); fflush(vTcpRtpLogHandle); _vCurTcpRtpLogNum++; if (_vCurTcpRtpLogNum > MAX_RTP_TCP_NUMBER){ _rebuildTcpRtpLogFiles(); _vCurTcpRtpLogNum = 0; } } pthread_mutex_unlock(&_vTcpRtpLogMutex); }
相关文章推荐
- linux环境应用程序LOG日志打印(C语言)
- linux环境下部署tomcat工程,日志不走log4j配置而打印到catalina.out可能的原因
- log--logback--日志在windows上可以打印,在linux上不能打印的问题
- linux下C语言编程打印syslog日志
- C语言编程打印linux环境变量
- [如何控制Log 1]分别在Linux和Android中用C语言写系统日志
- 用C语言打印日志(Log)
- Spring学习笔记(三十):关于org.slf4j.logger的日志打印log.info(string,object)
- Apache tomcat 日志分析(Linux环境)
- linux环境下,利用gsoap生成webservice客户端进行应用程序开发的小结
- Linux + C - 程序语言的发展以及程序的基本组成 C语言开发环境 (必备内容)
- Linux环境下学C语言开发要学些什么
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Linux系统的LOG日志文件及入侵后日志的清除
- 工作备忘-设置Log日志打印开关
- 记录华为、魅族手机无法打印 Log 日志的问题
- 【收集】Linux线程池(C语言)及简单实现示例 分类: Linux --- 应用程序设计 2014-12-01 18:02 65人阅读 评论(0) 收藏
- Linux日志:rsyslog及loganalyzer(一)
- linux logrotate进行日志分割
- Linux 日志级别(loglevel)详解