我正在Linux用户空间中用C编写嵌入式应用程序。 我需要将文件名和函数名添加到syslog字符串中。 我怎么能这样做?
注意:为了更好地解释我的自我,我需要定义一个填充文件名和func名称的宏。 我所做的就是以下内容:
#define LOG(prio, ...) my_log(__FILE__, __LINE__, __func__, prio, __VA_ARGS__)
问题在于my_log的实现:
void my_log(const char *file, int line, const char *func, int prio, const char *fmt, ...)
{
//how to add the "filename:line, funcname: " string to the fmt string
va_start(args, full_fmt);
vsyslog(prio, full_fmt, args);
va_end(args);
}
答案 0 :(得分:3)
syslog
接受printf
格式字符串。你可能指的是:
syslog(1, "%s:%d: something bad happened", __FILE__, __LINE__);
__FILE__
会自动扩展为包含当前源文件的字符串。 __LINE__
同样会扩展到当前文件中的当前行。