将syslog工具日志重定向到自定义文件

时间:2014-05-22 10:27:46

标签: c++ logging embedded syslog busybox

我有一个带有忙箱的嵌入式系统。繁忙的盒子手册页说明:

  

"请注意,此版本的syslogd会忽略/etc/syslog.conf。"

有一个选项-O,但它会将所有邮件重定向到自定义文件 我是从C ++发送消息的。 找到某个选项-f用于设置外部配置文件 - 不起作用。

这就是我从应用程序连接到记录器的方式:

    bool Log::start()
{
/* Launch process here */
    setlogmask(LOG_UPTO (LOG_DEBUG));
    openlog(LOG_IDENTITY, LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

    return true;
}

通过调用我的应用程序中的函数,可以为整个syslog的某些工具或工具掩码设置不同的日志位置吗?或者莫名其妙?

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题(不是Busybox,而是使用裸机syslogd将应用程序的syslog重定向到不同的日志文件)。解决方案有两个步骤:

  1. 更新应用程序对openlog()的调用,将第3个参数设置为int facility,然后创建将LOCAL0到LOCAL7转换为LOG_LOCAL0到LOG_LOCAL7标签的配置代码。然后我们配置应用程序为那些只需要该应用程序的日志数据的主机指定LOCAL3。

  2. 然后我们的Operations人员正在配置syslogd以将LOCAL3工具的日志数据重定向到单独的文件。我不确切地知道他们提出了什么,所以我不会进一步推测。但他们要求我配置设施,知道他们可以根据设施重定向syslogd输出。

  3. 我注意到的一件事是您使用LOG_CONS。我曾经这样做,但发现当syslogd无法写入时,这导致syslog分叉子进程和Solaris x86_64进程表充满了僵尸。所以我不再使用那面旗帜了。

相关问题