如何配置syslog以便应用程序日志转到特定文件

sur*_*esh 11 c++ linux syslog rsyslog

我有一个应用程序myapp应该日志文件发送/var/log/myapp.log.myapp是用C++编写的.以下示例代码仅将日志发送到/ var/log/syslog.我的操作系统是Linux - Ubuntu 12.04 - 具体而言.我还发现我的机器安装了rsyslog而不是syslog.

#include <stdio.h>
#include <unistd.h>
#include <syslog.h>

int main(void) {
    openlog("myapp", LOG_PID|LOG_CONS, LOG_USER);
    syslog(LOG_INFO, "abc 10");
    closelog();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

lup*_*upz 6

根据syslog(3)联机帮助页,openlog()的第一个参数设置日志消息的前缀,而不是文件名。您可以使用LOG_LOCAL0之类的功能来标记您的输出,然后使用/etc/syslog.conf配置syslogd以将这些日志发送到所需文件。