Ubuntu

(L)ubuntu 12.04 系統日誌到自定義文件(不是 /var/log/syslog 而是 /var/log/mylog) - ubuntu 12.04

  • April 5, 2019

我在 ubuntu 12.04 上成功測試了以下系統日誌“hello world”範例:

// gcc giuspexample.c -o giuspexample

#include <syslog.h>

int  main(int argc, char *argv[])
{
   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

不起作用(找不到命令)並且無論如何重新啟動電腦都不會開始在 /var/log/mylog 上寫入,但仍在 /var/log/syslog 上。有人知道出了什麼問題嗎?謝謝。

這就是我成功的方式。

在我的文件夾 /etc/rsyslog.d 中有兩個文件:

20-ufw.conf 和 50-default.conf

我添加了一個文件:

sudo nano /etc/rsyslog.d/30-mycustomname.conf

具有以下內容:

# 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;
}

引用自:https://unix.stackexchange.com/questions/40533