c - 如何将文件名添加到系统日志字符串?

标签 c linux

我正在 Linux 用户空间中用 C 编写嵌入式应用程序。 我需要将文件名和函数名添加到系统日志字符串中。 我该怎么做?

注意:为了更好地解释我自己,我需要定义一个宏来填充文件名和函数名.. 我所做的是以下内容:

#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);
}

最佳答案

syslog 接受类似 printf 的格式字符串。您可能指的是以下内容:

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

__FILE__ 自动扩展为包含当前源文件的字符串。 __LINE__ 类似地扩展到当前文件中的当前行。

关于c - 如何将文件名添加到系统日志字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385561/

相关文章:

android - NDK冲突c/c++

linux - sed 带有特殊字符的字符串 新

c - Linux C 网络通信程序在调试器中有效,但在外部无效

c++ - 将 boost 静态链接到 Linux 上的共享对象时遇到问题

linux - 如何在 linux 中使用 iptables 将 http 和 https 流量转发到透明代理

C - 将标准输入/输出重定向到单个双向文件描述符

c - Windows 7 中一些奇怪的 C 编译错误

c - 访问通过引用传递给函数的双指针二维数组

c++ - 带有 TCSADRAIN 标志的 tcsetattr() 阻塞时间很奇怪

c - 如何删除与其他号码隔离的号码