logrotateでログがローテーションされない解決方法(Linux /etc/logrorate.d)

サーバー設定
スポンサーリンク

logrorateでログがローテーションされなかったので、解決策を調べてみた。

スポンサーリンク

logrorate (ログローテート)とは

logrotateとは、Apacheのアクセスログや、syslogなど運用の中で肥大化していくログファイルを定期的に退避してローテートしてくれるツールです。

 

logrotateの設定ファイルは次の通りです。

  • /etc/logrotate.conf    全てのログファイルに対しての設定
  • /etc/logrotate.d/ ディレクトリ以下に個別のログファイルごとの設定

 

/etc/logrotated/ディレクトリ以下の個別の設定ファイルに記載した内容は、logrotate.confファイルに設定した内容より優先度が高くなります。

 

/etc/logrotate.confの設定例

 

Apacheのログファイル (access_logやerror_log ) をローテーションする場合

/etc/logrotate.d/httpd の設定例

 

個別の設定ファイル /etc/logrotate.d/httpd の設定は、/etc/logrotate.confより優先されます。

指定しなかった場合は、logrotate.confの設定が適用され、何も記述が無いものに関してはlogrotateのデフォルト値が採用されます。

logratateがうまく行かない場合の対処方法、解決方法

logrotate を実際には実行せずに実行したらどのようになるかを試せる dry-run(リハーサル)モードがあるのでいつでも気軽に試せます。

-d をつけることで dry-run(リハーサル)モードで実行できます

 

-dオプションはテスト実行可能ですが、実際にはローテーションされないオプションになります。

 

/etc/logrotate.confファイルを指定する事も可能です。

この場合、lorotate.confファイル内で、各個別の設定ファイルが読み込まれるのでlogrotate.dディレクトリ以下の全てがテストの対象となります。

Redmineのログがローテートしない

Redmineのログがローテートしませんでした。

 

https://redmine.jp/faq/system_management/production-log-rotate/

 

ドライランを行ってみます。

 

うーん。。。

error: skipping "/var/lib/redmine/log/production.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

ログがローテートされない件の解決策

ログがローテートされない件の解決策は次の通りです。

  • 親ディレクトリのパーミッションを 755 へ変更する
  • ローテートするユーザーを設定で指定する ( /etc/logrotate.d/xxx にて、 su ディレクティブでユーザーを指定する)

 

 

こうすればいいのかな。

 

コメント