c / c ++ syslog到自定义文件(不是/ var / log / syslog但是/ var / log / mylog) - ubuntu 12.04

时间:2012-06-08 16:18:17

标签: ubuntu syslog

我在ubuntu 12.04上成功测试了以下syslog“hello world”示例:

// gcc giuspexample.c -o giuspexample

#include <syslog.h>

int  main()
{
    setlogmask(LOG_UPTO (LOG_NOTICE));

    openlog("atm", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL0);

    syslog(LOG_NOTICE, "Program started by User %d", getuid ());
    syslog(LOG_INFO, "A tree falls in a forest");

    closelog();
    return 0;
}

我可以读取/ var / log / syslog中的条目。 我按照http://www.codealias.info/technotes/syslog_simple_example上有关如何更改目标文件路径的说明进行操作

echo "local0.*  /var/log/mylog" >> /etc/syslog.conf

但是试图运行

sudo /etc/init.d/syslog restart

不起作用(命令未找到)并且无论如何重新启动pc都不会开始写入/ var / log / mylog但仍然在/ var / log / syslog上。 有人知道什么是错的吗? 感谢。

1 个答案:

答案 0 :(得分:8)

/etc/rsyslog.d目录中,有两个文件:

  1. 20-ufw.conf
  2. 50-default.conf
  3. 我使用/etc/rsyslog.d/30-mycustomname.conf添加了文件sudo nano,其中包含以下内容:

    # Log QSD Centro generated log messages to file
    if $programname == 'centro' then /var/log/centro.log
    # Uncomment the following to stop logging anything that matches the last rule.
    & ~
    

    然后我检查文件/var/log/centro.log是否不存在

    sudo rm -f /var/log/centro.log
    

    然后我重启服务

    sudo service rsyslog restart
    

    最后以下代码有效:

    // gcc centro.c -o centro
    
    #include <stdio.h>
    #include <syslog.h>
    
    int  main(int argc, char *argv[])
    {
        openlog(NULL, 0, LOG_USER);
    
        syslog(LOG_INFO, "MORTACCI TUA!!!");
    
        closelog();
        return 0;
    }
    
相关问题