void log_msg(unsigned level, const char *tips, const char *format, ...) { char msgb[LOG_MSGSZ]; int msgl; va_list varg; const char *name = task_name(); assert(format); INIT(); if (level > task_level()) return; msgb[0] = level; msgl = 1 + snprintf(msgb + 1, LOG_MSGSZ - 1, "[%s%s%s] %s%s%s ", __PROC__, name ? "." : "", name ? name : "", tips ? "<" : "", tips ? tips : "", tips ? ">" : ""); msgl = MIN(msgl, LOG_MSGSZ - 1); va_start(varg, format); msgl = msgl + vsnprintf(msgb + msgl, LOG_MSGSZ - msgl - 1, format, varg); va_end(varg); msgl = MIN(msgl, LOG_MSGSZ - 1); msgb[msgl++] = '\n'; PUSH(msgb, msgl); }
时间: 2024-04-27 20:25:32 浏览: 125
这段代码是一个日志输出函数,可以将特定等级的日志信息写入日志文件或者打印到控制台。参数level指定日志等级,tips指定日志的额外描述信息,format指定日志内容的格式,可以使用类似printf的格式化字符串。函数会将这些信息整合成一个完整的日志信息,并将其写入一个缓冲区msgb中,最后将msgb的内容压入日志队列中。在执行这个函数之前,需要先调用INIT函数初始化日志模块。如果指定的日志等级大于当前任务的日志等级,则不会进行任何操作。
阅读全文