Macでログローテーションする
Launch Controlなどで定期的に何かしらのジョブを実行するような場合、ログファイルを残しておきたい。しかし、自動で実行されるものなので放っておくとファイルサイズが肥大化してしまう。
そういうときにはログローテーションと呼ばれる仕組みを使って、ファイルサイズが大きくなったら別の場所にアーカイブする・古いアーカイブは削除する、というようなケアを定期的に行うことになる。
Macだと、newsyslog
というプログラムが定期的に起動しており、設定ファイルを置いとけばログローテーションを実行してくれる。
設定ファイルは、/etc/newsyslog.d
以下に適当な名前で置く(要rootパーミッション)。設定ファイルの書式は、以下のような感じ。#
で始まる行はコメントである。
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
<logファイルのパス> hotoku:staff 640 5 10000 * NJ
フィールドの意味は、だいたい想像が付くので略。flagsだけメモしておく。
N
ログファイルをローテートとするときにシグナルを送るプロセスがないJ
ローテートされたログファイルを圧縮する