如何将文件名添加到syslog字符串?

时间:2016-05-23 07:57:20

标签: c linux

我正在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);
}

1 个答案:

答案 0 :(得分:3)

syslog接受printf格式字符串。你可能指的是:

syslog(1, "%s:%d: something bad happened", __FILE__, __LINE__);

__FILE__会自动扩展为包含当前源文件的字符串。 __LINE__同样会扩展到当前文件中的当前行。