「Logrotate」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎設定: == Usage == を追加)
(他言語へのリンクを追加)
 
(2人の利用者による、間の4版が非表示)
2行目: 2行目:
 
[[Category:データ圧縮とアーカイブ]]
 
[[Category:データ圧縮とアーカイブ]]
 
[[en:Logrotate]]
 
[[en:Logrotate]]
  +
[[pl:Logrotate]]
  +
[[uk:Logrotate]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Cron}}
 
{{Related|Cron}}
17行目: 19行目:
 
Logrotate は {{Pkg|logrotate}} パッケージでインストールできます。
 
Logrotate は {{Pkg|logrotate}} パッケージでインストールできます。
   
<s>デフォルトでは、logrotate は [[systemd/タイマー|systemd タイマー]]によって毎日動作します: {{ic|logrotate.timer}}</s>
+
デフォルトでは、logrotate は [[systemd/タイマー|systemd タイマー]]によって毎日動作します: {{ic|logrotate.timer}}
   
  +
==設定==
日次でlogrotateの実行を有効にするには次のコマンドを利用します。
 
   
  +
デフォルトのパラメータを設定する logrotate の主な設定ファイルは {{ic|/etc/logrotate.conf}} です。追加のアプリケーション固有の設定ファイルは、{{ic|/etc/logrotate.d}} ディレクトリに含まれています。アプリケーション固有に設定された値は、プライマリ設定ファイルの同じパラメータをオーバーライドします。設定例と使用可能なディレクティブのリファレンスについては、{{man|5|logrotate.conf}} を参照してください。
{{bc|
 
# systemctl enable logrotate.timer
 
}}
 
{{bc|
 
# systemctl start logrotate.timer
 
}}
 
{{hc|
 
# systemctl status logrotate.timer
 
|
 
● logrotate.timer - Daily rotation of log files
 
Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled)
 
Active: active (waiting) since Sun 2020-06-08 xx:xx:xx JST; 5s ago
 
Trigger: Mon 2020-06-08 00:00:00 JST; 56min left
 
Triggers: ● logrotate.service
 
Docs: man:logrotate(8)
 
man:logrotate.conf(5)
 
}}
 
{{hc|
 
# systemctl list-timers
 
|
 
NEXT LEFT LAST PASSED UNIT ACTIVATE
 
Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service
 
}}
 
 
==設定==
 
   
  +
logrotate が正しく機能するかどうかを確認するには、デバッグモードで実行します。このモードでは、デバッグ出力の生成以外は何も行われません:
logrotate の一番重要な設定ファイルは {{ic|/etc/logrotate.conf}} です。また、{{ic|/etc/logrotate.d}} ディレクトリには他の設定ファイルが含まれています。
 
   
  +
$ logrotate --debug /etc/logrotate.conf
logrotate が正しく動作するか確認するには、以下のコマンドを実行してください。デバッグ出力が生成されます:
 
{{bc|# logrotate --debug /etc/logrotate.conf}}
 
logrotate スクリプトをテストするには (例えば {{ic|/etc/logrotate.d}} ディレクトリの nginx スクリプト)、以下のように実行してみてください:
 
{{bc|# logrotate -f -v /etc/logrotate.d/nginx}}
 
   
 
=== ログの圧縮 ===
 
=== ログの圧縮 ===
   
{{ic|zstd}}のようなコマンドを使、ログローテーション時にログを圧縮することが出来ます。
+
Logrotate は、{{ic|zstd}} のようなカスタム コマンドを使用してログを圧縮できます。
   
 
{{hc|/etc/logrotate.conf|
 
{{hc|/etc/logrotate.conf|
66行目: 41行目:
 
}}
 
}}
   
詳細は[https://man.archlinux.org/man/logrotate.conf.5 logrotate.conf(5)]や [https://man.archlinux.org/man/zstd.1 zstd]確認してさい。
+
詳細について、{{man|5|logrotate.conf}} および {{man|1|zstd}}参照してください。
   
== Usage ==
+
== 使用方法 ==
   
logrotate is usually run through the [[systemd]] service: {{ic|logrotate.service}}.
+
logrotate は通常、[[systemd]] サービスを介して実行されます。: {{ic|logrotate.service}}
   
To run logrotate manually:
+
logrotate を手動で実行するには:
 
logrotate /etc/logrotate.conf
 
logrotate /etc/logrotate.conf
   
  +
単一のログファイルをローテートするには:
To rotate a single log file:
 
 
logrotate /etc/logrotate.d/mylog
 
logrotate /etc/logrotate.d/mylog
   
  +
設定ファイルの実行をシミュレーションするには(''dry run''):
To simulate running your configuration file (''dry run''):
 
 
logrotate --debug /etc/logrotate.d/mylog
 
logrotate --debug /etc/logrotate.d/mylog
   
  +
条件が満されていない場合でも強制的にローテートするには、次のコマンドを実行します:
To force running rotations even when conditions are not met, run:
 
 
logrotate -vf /etc/logrotate.d/mylog
 
logrotate -vf /etc/logrotate.d/mylog
   
See {{man|8|logrotate}} for more details.
+
詳細については、{{man|8|logrotate}} を参照してください。
   
 
==トラブルシューティング==
 
==トラブルシューティング==
103行目: 78行目:
 
"/var/log/httpd/access_log" 2016-3-20-5:0:0
 
"/var/log/httpd/access_log" 2016-3-20-5:0:0
 
}}
 
}}
  +
=== 親ディレクトリに安全でない権限があるためログをスキップする ===
=== Skipping log because parent directory has insecure permission ===
 
   
  +
どのユーザーとどのグループが {{ic|/etc/logrotate.d/job}} を実行する必要があるかを構成で設定します。
Set in the config which user and which group has to job {{ic|/etc/logrotate.d/job}} to be run with:
 
   
 
{{bc|
 
{{bc|

2024年4月2日 (火) 11:48時点における最新版

関連記事

https://github.com/logrotate/logrotate より:

ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。

logrotate のローテーションでは、既存のログファイルに数字を割り振って名前を変更し、元の空のログファイルを再作成します。例えば、/var/log/syslog.log/var/log/syslog.log.1 に名前が変更されます。/var/log/syslog.log.1 が既に存在する場合、名前は /var/log/syslog.log.2 に変更されます (バックログの数は設定で変えられます)。

インストール

Logrotate は logrotate パッケージでインストールできます。

デフォルトでは、logrotate は systemd タイマーによって毎日動作します: logrotate.timer

設定

デフォルトのパラメータを設定する logrotate の主な設定ファイルは /etc/logrotate.conf です。追加のアプリケーション固有の設定ファイルは、/etc/logrotate.d ディレクトリに含まれています。アプリケーション固有に設定された値は、プライマリ設定ファイルの同じパラメータをオーバーライドします。設定例と使用可能なディレクティブのリファレンスについては、logrotate.conf(5) を参照してください。

logrotate が正しく機能するかどうかを確認するには、デバッグモードで実行します。このモードでは、デバッグ出力の生成以外は何も行われません:

$ logrotate --debug /etc/logrotate.conf

ログの圧縮

Logrotate は、zstd のようなカスタム コマンドを使用してログを圧縮できます。

/etc/logrotate.conf
compress
compresscmd /usr/bin/zstd
compressext .zst
compressoptions -T0 --long
uncompresscmd /usr/bin/unzstd

詳細については、logrotate.conf(5) および zstd(1) を参照してください。

使用方法

logrotate は通常、systemd サービスを介して実行されます。: logrotate.service

logrotate を手動で実行するには:

logrotate /etc/logrotate.conf

単一のログファイルをローテートするには:

logrotate /etc/logrotate.d/mylog

設定ファイルの実行をシミュレーションするには(dry run):

logrotate --debug /etc/logrotate.d/mylog

条件が満されていない場合でも強制的にローテートするには、次のコマンドを実行します:

logrotate -vf /etc/logrotate.d/mylog

詳細については、logrotate(8) を参照してください。

トラブルシューティング

exim のログがローテーションされない

/etc/logrotate.confolddir 変数を設定した場合、以下のようなメッセージが表示されます:

error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied

この問題を修正するには、ユーザー exim をグループ log に追加してください。そして olddir (/var/log/old) のグループをデフォルトの root から log に変更してください。

logrotate の状態を確認

cat /var/lib/logrotate.status を実行することで logroate によってローテートされているファイルを確認できます:

 # cat /var/lib/logrotate.status 
"/var/log/mysql/query.log" 2016-3-20-5:0:0
"/var/log/samba/samba-smbd.log" 2016-3-21-5:0:0
"/var/log/httpd/access_log" 2016-3-20-5:0:0

親ディレクトリに安全でない権限があるためログをスキップする

どのユーザーとどのグループが /etc/logrotate.d/job を実行する必要があるかを構成で設定します。

file-to-be-rotated {
    su user group
    rotate 4
}

参照