インフラ作業支援ラボ ← logrotateメニューへ ← 戻る

logrotate設定を作成

設定例を作るだけでなく、権限、圧縮、ローテーション方式、後処理の注意点と確認コマンドまで表示します。

このツールで防げること

ログ肥大化、保持不足、create権限の誤り、copytruncateやpostrotateによる運用事故を事前に確認します。

作る → 確認する → 適用前に試す 設定例だけで終わらず、問題候補と確認コマンドまで表示します。
入力内容はブラウザ内で処理され、設定内容を外部AIへ送信しません。ページ閲覧情報はアクセス解析に利用します。

絶対パスで指定します。ワイルドカードも使用できます。

ログ量に合わせて選びます。大量ログならdailyが一般的です。

古いログを何世代保持するか指定します。0は保持しません。

指定すると、周期に加えてサイズ条件も利用できます。

基本推奨 ログが一時的に存在しなくても処理全体をエラーにしないmissingokを通常は選びます。

基本推奨 空ログを不要にローテーションしないnotifemptyが一般的です。

基本推奨 保存容量を抑えるため、特別な理由がなければcompressを選びます。

「次回まで遅らせる」を選ぶと、設定にdelaycompressを追加します。最新のローテート済みログだけは圧縮せず、次回に圧縮します。

条件付き推奨 アプリが直前のログを開いたままにする場合に向いています。すぐ圧縮して問題ないサービスでは必須ではありません。

「新しいログを作成」は設定名createです。元ログをリネームし、新しい空ファイルを作ります。

基本推奨 サービスがreloadやシグナルでログを再オープンできる場合はこちらを選びます。

「元ログをコピー後に空にする」は設定名copytruncateです。再オープンに対応していないサービス向けですが、コピー中の書き込みが欠落する可能性があります。

ローテーション方式で「新しいログを作成」を選んだ場合だけ使用します。create 0640 appuser appgroupのように、新しい空ログの権限・所有者・グループを指定します。

基本推奨 権限は0640を出発点にし、所有者とグループは実際にログを書き込むサービスに合わせて変更してください。

postrotateは、ローテーション後に実行する後処理です。主にサービスへ「新しいログへ切り替えてください」と通知するために使います。

必要な場合だけ設定 「新しいログを作成」を選び、サービス側にログ再オープンの通知が必要な場合に入力します。停止を伴うrestartより、reloadや専用シグナルを優先します。

「後処理を1回だけ実行」を選ぶと、設定にsharedscriptsを追加します。ワイルドカードで複数ログが対象でも、postrotateをまとめて1回だけ実行します。

条件付き推奨 複数ログをまとめて処理し、同じサービスへのreloadを1回だけ行いたい場合に選びます。ログごとに別の処理が必要なら選びません。



確認コマンド


  

注意点

copytruncateはアプリ再起動不要ですが、コピー中に書き込まれたログが欠落する可能性があります。可能ならサービス側でログを再オープンする方式を優先します。

生成後に必ず確認すること

生成後はlogrotate --debugで解釈結果を確認し、ローテーション後の所有者・権限とサービスの書き込み継続を確認してください。

判定範囲と実環境での確認

このツールで確認できること

周期、保持世代、圧縮、create、copytruncate、postrotateなどから設定例を生成します。

このツールだけでは分からないこと

サービス固有のログ再オープン方法、SELinux、ファイルシステム、ディスク容量、logrotateのバージョン差までは完全には判定できません。

実環境で追加確認すること

logrotate --debugで解釈結果を確認し、ローテート後のファイル所有者・権限とサービスの書き込み継続を確認してください。

適用時の注意

logrotate -fは強制実行です。copytruncateやpostrotateを含む設定では、ログ欠落やサービス影響を確認してから使ってください。

よくある質問

createとcopytruncateはどちらを選ぶべきですか?

基本はcreateを使い、サービスにreloadやログ再オープン通知を行う方式が安全です。copytruncateは再オープンできないサービス向けですが、コピー中のログ欠落リスクがあります。

postrotateには何を書けばよいですか?

サービスが新しいログファイルを開き直すためのreloadや専用シグナルを記述します。停止を伴うrestartは、必要性を確認してから使ってください。

確認コマンドでは何が分かりますか?

logrotate -dまたは--debugで設定解釈、-fで強制実行、ls -lで生成後の所有者・権限を確認できます。-fは実際に処理するため注意が必要です。