%20ubuntu%2012.04%20syslog%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%97%E3%81%A6(%2Fvar%2Flog%2Fsyslog%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%2Fvar%2Flog%2Fmylog)%20-%20ubuntu%2012.04.png)
Ubuntu 12.04では、次のsyslog "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にあります。何が間違っているのか知っている人はいますか?ありがとうございます。
答え1
これが私が成功する方法です。
私のフォルダ/etc/rsyslog.dには2つのファイルがあります。
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;
}
答え2
デフォルトでは、Ubuntuはrsyslogを使用します。その設定ファイルは次の場所にあります。
/etc/rsyslog.conf
そして
/etc/rsyslog.conf