- 论坛徽章:
- 0
|
c写的一个服务, 每分钟大概有10万条日志。多个进程会同时向日志文件写日志。
日志文件名的的格式:2010-11-29-15-33.log
我的目的是希望所有的log都计入在相应的日志文件中。
比如, 在15点33分内的日志, 全部在文件2010-11-29-15-33.log中。
我现在的想法是:- static int write_log(const char *msg) {
- FILE *gp_log = NULL;
- char file_name[64] = "";
- time_t rawtime;
- struct tm timeinfo;
- time(&rawtime);
- if ( localtime_r(&rawtime, &timeinfo) != NULL ) {
- //file name format:2010-11-30_15-33.log
- sprintf(file_name, "%04d-%02d-%02d_%02d-%02d.log", timeinfo.tm_year+1900, timeinfo.tm_mon+1, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min);
- }
- gp_log = fopen(file_name, "a+");
- fprintf(gp_log, "%s", msg );
-
- fclose(gp_log);
-
- return 0;
- }
复制代码 这个非常没效率: 每写一条日志都要打开文件, 写了之后又要关闭文件。
请问各位有什么好办法?
我甚至不知道如何预先整点生成日志文件. 用定时器不是整点的。
(单独写一个日志服务器就算了。时间有点紧。) |
|