標準出力をLog Fileに書き出しつつLog Rotationさせたい


何らかのToolの出力をLog fileに書き出したいけど、単一のLog fileへ書き出し続けると巨大になっちゃうので、出力を(手間を掛けずに)Log Rotationさせたい、と言うときの手順をチラ裏しておきます。

結論

使い方

毎秒ごとに1行づつ標準出力にLogを吐き出すScriptを10分動かして、3分毎にRotateさせつつLogをfileに保存する、というCase studyを考えてみる。Shell scriptの中身は以下の通り (600回echoして1秒待つを繰り返す)

test.sh
for i in `seq 1 600`
do
  echo "$i times loop"
  sleep 1s
done

これをcronologを使いつつ、Log出力する場合

./test.sh | /usr/bin/cronolog --period=3minutes log-%Y-%m-%d-%H-%M.out

10分待つと、以下の様なfile名のlog fileが出来るはず

log-2015-05-28-03-00.out
log-2015-05-28-03-03.out
log-2015-05-28-03-06.out
log-2015-05-28-03-09.out

その他