syslog-ngでプログラム名が与えられたログをはき出す

syslog-ngでプログラム名が与えられたログをはき出すようにしてみた。

そんでプログラム名をファイル名とする。

filter f_programs { program(".+"); };
destination d_program { file("/usr/log/$HOST/$PROGRAM.log"); };
log { source(src); filter(f_programs); destination(d_program); };

設定でdestinationの名前をprogramにしてたら、どうやら予約語らしく、syntax errorを吐かれてしまった。

今回実は、これで拾わせたいログがあった。

それはphpのerror_log。php.iniでerror_logをsyslogにして、そのホストでsyslog.confで*.* @logserveって感じにして、上の設定で拾うことにした。

このとき、*.*で拾いはした物の、うまくsyslogが送れてるかなどなど、確認したくてもうまくできなかった。

そもそもsyslogってしたのはいいけど、ファシリティは何でおくられるの?っていう疑問が。

自分で調べたけれどもわからず、スペシャルな先輩に訪ねてみると

「userあたりじゃない?」

とのアドバイスが。確かにuserファシリティでした。一般的なアプリケーションで使うのはuserを使いましょう、ってことらしい。manチラ見したらあったとか、さすが先輩、神っす。

テスト用に使ったのは

logger -p usr.info -t php hogehoge

って感じでやってました。

最後にうまくログがとれていることを確認。

コメントを残す