我在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上。 有人知道什么是错的吗? 感谢。
答案 0 :(得分:8)
在/etc/rsyslog.d
目录中,有两个文件:
20-ufw.conf
50-default.conf
我使用/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;
}