ログローテーション【log rotation】ログローテート/log rotate
ログローテーションとは?

ログとは、システムやアプリケーションが動作中に発生したイベントを時系列に記録したデータである。Webサーバのアクセス履歴、オペレーティングシステム(OS)のエラー記録、アプリケーションの動作状況など、様々なソフトウェアが様々な目的でログを出力する。これらは通常ストレージ上のファイルとして蓄積され、放置すれば使用している間増加し続ける。
蓄積が進むとストレージの空き領域が圧迫され、ファイルサイズの肥大化によって閲覧や検索が困難になるほか、空き容量の枯渇がシステム障害の原因になることもある。このような事態を防ぐ手段がログローテーションで、一定の期間や容量ごとに記録するファイルを切り替えたり、最も古いものから削除したりする。
ローテーションの条件としては、日・週・月など一定期間が経過するタイミングや、ファイルサイズが一定量に達した時点での切り替えが一般的である。処理の内容は、現在のログファイルに日付などを付けて別名で保存し、新たに空のファイルを作成するという方法が基本となる。古いログを自動的に圧縮したり、一定の世代数を経過したものを自動的に削除する場合もある。
ログを書き込み続けているプロセスが存在する場合、ファイルを切り替えるだけでは新しいファイルへの書き込みが始まらないことがある。そのため、プロセスにシグナルを送ってログファイルを再オープンさせたり、元ファイルをコピーしてから内容を空にしたりといった制御が必要になることがある。
ローテーションの仕組みはログを出力するソフトウェア自身に内蔵されている場合もあるが、外部ツールで一元管理する場合もある。Linux環境では「logrotate」が代表的なツールであり、対象ログのパス、ローテーション条件、保持期間、圧縮方法などを設定ファイルに記述するだけで、様々なログファイルのローテーションを自動管理できる。cronやsystemdタイマーと組み合わせて定期実行することが多い。