「Logrotate」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎インストール: logrotate.timer サービスを起動・起動していることを確認するコマンドを追記。)
(→‎インストール: コマンドラインの入力と出力に、テンプレート:hc を使用。sudoを使うのをやめました。)
22行目: 22行目:
   
 
{{bc|
 
{{bc|
% sudo systemctl enable logrotate.timer
+
# systemctl enable logrotate.timer
  +
}}
% sudo systemctl start logrotate.timer
 
  +
{{bc|
% sudo systemctl status logrotate.timer
 
  +
# systemctl start logrotate.timer
  +
}}
  +
{{hc|
  +
# systemctl status logrotate.timer
  +
|
 
● logrotate.timer - Daily rotation of log files
 
● logrotate.timer - Daily rotation of log files
 
Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled)
 
Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled)
32行目: 37行目:
 
Docs: man:logrotate(8)
 
Docs: man:logrotate(8)
 
man:logrotate.conf(5)
 
man:logrotate.conf(5)
  +
}}
% sudo systemctl list-timers
 
  +
{{hc|
  +
# systemctl list-timers
  +
|
 
NEXT LEFT LAST PASSED UNIT ACTIVATE
 
NEXT LEFT LAST PASSED UNIT ACTIVATE
 
Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service
 
Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service

2021年5月10日 (月) 13:56時点における版

関連記事

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の実行を有効にするには次のコマンドを利用します。

# systemctl enable logrotate.timer
# systemctl start logrotate.timer
# 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)
# 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 の一番重要な設定ファイルは /etc/logrotate.conf です。また、/etc/logrotate.d ディレクトリには他の設定ファイルが含まれています。

logrotate が正しく動作するか確認するには、以下のコマンドを実行してください。デバッグ出力が生成されます:

logrotate -d

logrotate スクリプトをテストするには (例えば /etc/logrotate.d ディレクトリの nginx スクリプト)、以下のように実行してみてください:

logrotate -f -v /etc/logrotate.d/nginx

トラブルシューティング

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 によってローテートされているファイルを確認できます:

"/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

参照