オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

syslog が飛ばない・・・解決

»

ある組み込みLinux製品で、syslog を飛ばそうと思って /etc/rsyslog.conf を次のような設定を加えてみました。

$WorkDirectory /var/spool
$ActionQueueFileName fsmainqueue
$ActionQueueMaxDiskSpace 2g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
*.*     @SYSLOGサーバのIP

しかし、logger コマンドを使っても、そもそもローカルの/var/log/message にすら何も記録されません・・・

しばらく悩み、/ をリードオンリーにしていたことを思い出しました。

syslog()は、/dev/log とUNIX domain socketにより通信を行ってログ出力を行っているので、
/ がリードオンリーだとソケットが作れずログが吐けないのです。

この製品は訳があって、 / をRAMDISK化していなかったので、/etc/default/rsyslog を RSYSLOGD_OPTIONS="-c2 -r -a /tmp/log" にして、
/dev/log は /tmp/log へのシンボリックリンクとして対応しました。

これを作った当時はsyslogなんて絶対に使わないだろうと思っていましたが、意外と困るものです。

Comment(0)