Linux Logrotate 設定ファイル生成ツール(ログローテーション&圧縮)
SysAdmin & DevOps

Linux Logrotate 設定ファイル生成ツール(ログローテーション&圧縮)

日次・週次ローテーション、gzip圧縮、dateext、ファイルサイズ制限、postrotateスクリプトを含む本番環境用 /etc/logrotate.d/ 設定ファイルを安全に生成。

100% クライアント側プライバシー
サーバー送信ゼロ
プリセット:
Logrotate ディレクティブ設定
対象ファイル & 配置場所/etc/logrotate.d/nginx
ローテーション頻度 & 保持制限保持数: 14 世代のローテーションファイル
Compression & Timestamping (dateext)容量を約85%削減
ファイル権限 & プロセスの安全性copytruncate vs create
Reload Signals & Scripts (postrotate)
ローテーション後に実行
ローテーション前に実行
/var/log/nginx/*.log {
    daily
    rotate 14
    maxage 30
    missingok
    notifempty
    compress
    delaycompress
    dateext
    dateformat -%Y%m%d
    dateyesterday
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
    endscript
}
ローテーション&頻度
DAILY (14 copies)

自動削除されるまで指定世代数のログを保持します。

圧縮&ディスク容量
Gzip (delaycompress)

Estimated ~85% disk storage savings with background gzip.

権限&ライフサイクル
create 0640 www-data

Atomic file rotation with new file recreation and custom permissions.

100% クライアントサイド完結

サーバーへのデータ送信は一切ありません。ログパスやカスタムスクリプトはブラウザ内部でのみ安全に処理されます。

Logrotate仕様に完全準拠

copytruncate、delaycompress、dateext、サイズ制限、sharedscripts、su権限分離など主要ディレクティブを完全サポート。

本番導入に直結する成果物

logrotate.d設定ファイルに加えて、logrotate -dドライラン構文検証コマンドや自動セットアップスクリプトを瞬時に出力。

技術リファレンス&アーキテクチャガイド

Linux Logrotate 設定ファイル生成ツール (保持期間 & 圧縮設定ガイド) — リファレンスガイド

日次・週次ローテーション、gzip圧縮、dateext、ファイルサイズ制限、postrotateスクリプトを含む本番環境用 /etc/logrotate.d/ 設定ファイルを安全に生成。

主要パラメータ&設定項目

rotateディレクティブ

古いログを自動削除するまでに保持するローテーション世代数を指定します。

初期値: 4
frequencyディレクティブ

時間ベースのローテーション周期(daily / weekly / monthly / yearly)を指定します。

初期値: weekly
compressディレクティブ

ローテーション後のアーカイブファイルを gzip で圧縮しディスク容量を節約します。

初期値: compress
delaycompressディレクティブ

直近のローテーション済みログの圧縮を次回サイクルまで遅延させ、書き込みロックの競合を防ぎます。

初期値: delaycompress
createディレクティブ

ローテーション直後に新規作成する空ログファイルのパーミッション、所有者、グループを指定します。

初期値: 0640 root adm
copytruncateディレクティブ

ログファイルを複製した後に元ファイルをその場で0バイトに切り詰めます(ファイルハンドルを閉じないデーモン用)。

初期値: 無効
postrotateブロック

ローテーション完了後に実行するシェルスクリプトを定義します(systemctl reload やシグナル送信等)。

初期値: 任意

プロの活用テクニック&推奨設定

delaycompress と postrotate シグナルの併用

Nginx や PostgreSQL 等のデーモンはシグナルを受信するまで元のファイルディスクリプタに書き込みを継続します。delaycompress を有効化することで書き込み中の圧縮破損を防止できます。

ワイルドカード指定時は sharedscripts を必ず設定

/var/log/nginx/*.log のように複数ファイルを対象とする場合、sharedscripts を指定しないとマッチしたログの数だけ postrotate スクリプトが多重実行され、サービスの過負荷を招きます。

デバッグモード (-d) による安全なドライラン

本番反映前に必ず 'logrotate -d /etc/logrotate.d/myapp' を実行してください。ファイルを一切変更せずに構文解析と予定される処理内容を出力できます。

copytruncate における極小のログ損失リスクに注意

copytruncate はファイル複製から切り詰めまでの間に書き込まれたログが欠落する微小なレースコンディションが存在します。デーモンがシグナル再オープンに対応している場合は通常ローテーションと postrotate の併用を推奨します。

よくあるトラブルと解決策

'error: skipping ... parent directory has insecure permissions' と表示されて失敗する

設定ファイルやログディレクトリにグループや他者の書き込み権限がある場合、logrotate はセキュリティ保護のため実行を拒否します。'chmod 0644 /etc/logrotate.d/myapp' およびディレクトリの 'chmod 0755' を設定してください。

ローテーション後も古いログファイル(.1 や日付付きファイル)に書き込まれ続ける

Linux はパスではなくオープンされた inode に対して書き込みを行います。postrotate ブロック内で 'systemctl reload <service>' または 'kill -USR1' を実行してファイルディスクリプタを再オープンさせるか、copytruncate を利用してください。

意図しないタイミングで多重ローテーションが発生する

daily/weekly と同時に 'size' や 'maxsize' が設定されていないか確認してください。また /var/lib/logrotate/status を確認し、前回のローテーション記録日時を検証してください。

よくある質問 (FAQ)

作成した logrotate 設定ファイルはどこに配置すればよいですか?▼

各サービス個別の設定は /etc/logrotate.d/ ディレクトリ配下(例: /etc/logrotate.d/nginx)に配置します。マスター設定の /etc/logrotate.conf がこのディレクトリ内のファイルを自動的に読み込みます。

create と copytruncate の技術的な違いは何ですか?▼

create は既存のログファイルを別名に変更(リネーム)し、新規に空ファイルを作成するため、デーモンにシグナルを送ってファイルハンドルを再取得させる必要があります。一方 copytruncate は元ファイルを複製した後にその場でサイズを0に切り詰めるため、デーモンの再起動は不要ですが、極小時間のログ欠落の可能性があります。

dateext ディレクティブを使用するメリットは何ですか?▼

デフォルトの連番(.1, .2.gz)の代わりに日付スタンプ(YYYYMMDD)が付与されます。過去のアーカイブファイル名が次回ローテーション時にリネームされないため、Fluentd や Datadog などのログ収集エージェントが二重読み込みを起こさず安定します。

設定を検証するため強制的にローテーションを実行するにはどうすればよいですか?▼

'logrotate -vf /etc/logrotate.d/myapp' を実行します。-v で詳細ログが出力され、-f (force) によりスケジュールやサイズ制限を無視して即座にローテーションが実行されます。

su ディレクティブはなぜ必要なのですか?▼

ログディレクトリが root 以外の一般ユーザー(www-data や mysql 等)に所有されている場合、セキュリティ脆弱性(シンボリックリンク攻撃)を防ぐため、logrotate は 'su <user> <group>' ディレクティブによる権限降格を必須としています。

関連するおすすめ開発ツール

すべてのツール →
Ubuntu Netplan ネットワーク設定 YAML 生成ツール開発ツール

Ubuntu 20.04/22.04/24.04 向けの Netplan YAML 設定(静的IP、DHCP、DNSネームサーバー、ゲートウェイルート、仮想ブリッジ、BOND構成)をブラウザ上で安全に生成。

ツールを開く→
SQL DDL から Python SQLAlchemy 2.0 モデル生成ツール開発ツール

SQL の CREATE TABLE 文を、最新の Mapped および mapped_column 型注釈を備えた堅牢な Python SQLAlchemy 2.0 DeclarativeBase モデルへ即座に変換します。

ツールを開く→
SQL DDLからGolang GORM構造体モデル生成ツール開発ツール

SQLのCREATE TABLEスキーマからGORMタグ、JSONタグ、適切なGo型マッピングを備えたGolang構造体(struct)モデルを瞬時に自動生成します。

ツールを開く→
SQL DDLからSequelize TypeScriptモデルへの変換ジェネレーター開発ツール

SQLのCREATE TABLE文からSequelizeのTypeScriptモデル、DataTypes定義、CreationOptional属性、およびModel.init初期化コードを生成するための包括的開発者リファレンス。

ツールを開く→
Json To Elixir Ecto開発ツール

生のJSONデータからElixir Ectoスキーマ、マイグレーション、Changeset、Dialyzer型仕様(typespec)を自動生成するためのアーキテクチャ設計仕様書。

ツールを開く→
JSON to Scala 3 & Scala 2 Case Class 変換ツール開発ツール

JSONペイロードを高精度に解析し、型安全なScala 3およびScala 2のケースクラスへ変換。Circe、Play JSON、zio-jsonコーデックの自動導出に対応。

ツールを開く→