dropooiの日記

Linux/クラウド/スマホ/IoT関連の情報集め

nginxでもcronolog -Sしたい

nginxでもcronolog -Sしてログを日毎に分けて且つ最新のログのシンボリックリンクを自動生成したい。

 

 

Apacheでよくやる設定

 

CustomLog "|/usr/sbin/cronolog -S /path/log/app/access_log /path/log/app/%Y/%m/%d_access_log" combined

 

nginxだとserverディレクティブのaccess_logにapacheのようには書けない

access_log   /path/log/app/access_log main;

 

https://gist.github.com/ntakaaki/2891895

こちらを参考に

nginxのinitファイルを書き換える

ただし、mkfifoなパイプだとfluentdでtail出来ないので

cronolog_start()内のcronologの実行部分だけちょっと変更

 

==========================================

cronolog_start() {

    if ! [ -p $logdir/access_log_pipe ]; then

       rm -f $logdir/access_log_pipe

       rm -f $logdir/error_log_pipe

       mkfifo $logdir/access_log_pipe

       mkfifo $logdir/error_log_pipe

    fi

    /bin/sh -c "/bin/cat $logdir/access_log_pipe | $cronolog -S $logdir/access_log $logdir/%Y/%m/%d_access_log &"

    /bin/sh -c "/bin/cat $logdir/error_log_pipe  | $cronolog -S $logdir/error_log $logdir/%Y/%m/%d_error_log &"

==========================================

 

 そしてnginxのアクセスログの吐き出し先はパイプを指定

access_log   /path/log/app/access_log_pipe main;

 

これで

access_log_pipeと別にaccess_logという最新ログを参照したシンボリックリンクが出来る。

 

td-agent.confのsourceディレクティブは下記のように設定すればtail可能

  type tail

  path /path/log/api/access_log

  pos_file /path/log/api/access_log.pos

 

 

 

fluent-plugin-tail-ex使えって話もある