我构建了一个自定义日志记录函数,该函数接受“日志级别”和字符串。用户将指定与消息关联的日志级别(即错误、警告、跟踪等)。日志功能只会根据配置的当前日志级别将消息打印到控制台。
int global_log_level = INFO;
void logger(int msg_log_level, char * msg)
{
if(msg_log_level >= global_log_level )
{
printf("Log Level = %u: %s", msg_log_level, msg);
}
}
理想情况下,我想将格式化的字符串提供给这个函数。
logger(LOG_LEVEL_ERROR, "Error of %u occurred\n", error_code);
但是,通过添加这种“包装”逻辑,我无法输入格式化的消息。相反,我必须将消息写入临时字符串,然后将其提供给函数。
char temp[512];
sprintf("Error of %u occurred\n", error_code);
logger(LOG_LEVEL_ERROR, temp);
有没有办法实现记录器功能,这样我就不需要让用户自己创建一个临时字符串?