2013年1月26日土曜日

makeのログをsyslogに渡す

make したときにエラーが出ても、メッセージが上方に流れてしまって、エラーの原因が分からなくなることがあります。私だけかも知れませんが。

そこで、対処として、make > ./make.log 2>&1 のようにすれば、カレントディレクトリのmake.logというファイルにメッセージがリダイレクトされます。後からmake.logを見れば、makeの結果が分かるわけです。

ただ、せっかくログ出力用のツールがあるので、これを使います。syslogです。

syslog へのログの転送

syslogへのログの転送にはloggerを使います。また、makeに関するログだけ別のファイルに出力した場合は、syslog.confを修正する必要があります。以下のコマンドで、syslogに向けてログを転送できます。

make 2>&1 | logger -p local3.info -s -t make

2>&1: stderrをstdoutに渡します。パイプへstderrを渡すには、これが一番スマートなやり方だと思います。
-p: ファシリティとプライオリティを指定します。
-s: stderrに出力します。
-t: タグを指定します。

syslog.confの修正

syslog.confを以下のように修正すれば、local3ファシリティのinfoプライオリティのログだけを分けられます。(>>でアペンドすることで正しく動作するかは怪しい。追記する行より上に !ppp とあると、pppからのログに関するポリシと見なされます。行頭に!が付いている行がある場合、その行よりも上にポリシを追加すべきです。)

% sudo echo "local3.info    /var/log/make.log" >> /etc/syslog.conf

Debian Squeezeなど、最近のディストリビューションでは、セキュリティの観点から、暗号化して計算機外部へ転送できるので、rsyslogを使うことが多いです。この場合、/etc/rsyslog.confに上記のポリシを追記してください。

多分、他に良い方法があるんでしょうね。makeにそれらしいオプションがあるとか?

0 件のコメント:

コメントを投稿