将syslog设施日志重定向到自定义文件

Redirect syslog facility log to custom file

本文关键字:自定义 文件 重定向 日志 syslog 设施      更新时间:2023-10-16

我有一个内置忙框的嵌入式系统。忙框手册页说明:

"注意这个版本的syslogd忽略/etc/syslog.conf。"

有一个选项-O,但它将所有消息重定向到自定义文件。我用c++发送消息。

设置外部配置文件的选项-f不起作用。

这就是我如何从我的应用程序连接到logger:

    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从我的应用程序调用函数?或以某种方式吗?

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

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

  2. 然后我们的操作人员正在努力配置syslogd,将LOCAL3设施的日志数据重定向到一个单独的文件。我不知道他们到底想出了什么,所以我就不作进一步的推测了。但是他们要求我配置设备,因为他们知道他们可以根据设备重定向syslogd输出。

我注意到的一件事是你使用LOG_CONS。我曾经这样做过,但是发现当syslogd无法写入时,这会导致syslog派生一个子进程和Solaris x86_64进程表中充满僵尸。所以我不再使用那个标志了