DevDevデブ!!

プログラミングのこととか書きます。多分。。。

supervisorのログローテーションの挙動について調べた

supervisorのログローテーション機能について、linuxのlogrotateのcopytruncateみたいにログをロストする可能性がないかどうか気になったので調べた。

ロストしない(はず)

そもそもローテーション方法がlogrotateとは異なる。

logrotateの場合、ログファイルに出力しているのは別のプログラムなのに対し、supervisorの場合は管理するサブプロセスの標準出力、標準エラー出力をキャプチャし、ログ出力用のハンドラークラスを介してファイルに出力(emit)している。

ログのローテートが必要な場合、emitの後に必要であればファイルのローテーションを行うようになっているので、logrotateのcopytruncateのようにログを一部ロストする心配はないみたい。

具体的にはRotatingFileHandlerというクラスがログのローテーションを管理している

supervisor/loggers.py at 18b59a1403778766561ab49b18cf2558e8a4d227 · Supervisor/supervisor · GitHub