by shigemk2

当面は技術的なことしか書かない

つらいlog4php

とっても久々なPHP。

Apache log4php - LoggerAppenderRollingFile - Apache log4php

PHPのロギング用ライブラリ。でもね、調べたんだけど、

  • デフォルトはapplication.log
  • 前日以前のログはapplication.log.YYYY-MM-DD.gzで固める
  • 一定より昔のログは消す

こういう感じのログローテーションってlog4phpでは出来ないんだよね。

application.log.2016-05-07.gz
application.log.2016-05-08.gz
application.log.2016-05-09.gz
application.log.2016-05-10.gz
application.log.2016-05-11.gz
application.log

似たようなのにLoggerAppenderDailyFileっていうのがあるんだけど、こういう感じのログしか作れないんだよ。しかも古いのは消せない。

application.log.2016-05-07
application.log.2016-05-08
application.log.2016-05-09
application.log.2016-05-10
application.log.2016-05-11
application.log.2016-05-12

さらに似たようなのにLoggerAppenderRollingFileっていうのがあるんだけど、古いファイルは消せるんだけどバックアップファイルはナンバリングしか出来ないんだ。

application.log.4
application.log.3
application.log.2
application.log.1
application.log

つらい。確かに同じことをするためにはシェル芸とcronでごにょごにょしたらいいよ。いいんだけど、ログのローテートの設定ってアプリケーションの中で完結させたいと思いませんか?Ansibleとかでcron設定を撒くならまだしも、本番サーバに入って直接作業するのは嫌です。

これは、つまり、お前が開発者になるんだよ!と誰かが囁いているんだろうか。

雑なfluentdメモ bufferとか

  • num_threads out_forwardプラグインの機能で複数スレッドを利用した送信が出来る。スレッド数を増やせば送信の並列処理ができるけど、そのぶんCPU使用率が上がる。
  • buffer_chunk_limit 送信バッファの最大サイズ。送信量がバッファサイズを超えていたら全体が破綻する。
  • buffer_queue_limit チャンクを持てる最大数。多すぎるとメモリリークする。

tagomoris.hatenablog.com

qiita.com