Ubuntuでアプリケーションログを回転させる方法は?

Ubuntuでアプリケーションログを回転させる方法は?

Ubuntu Linux 14.04を使用していますが、ログの回転に問題があります。このファイルがあります。

rails@myapp:~$ ls -al myapp/log/production.log
-rw-r--r-- 1 rails rails 4522482443 Jun  5 12:11 myapp/log/production.log

私の/etc/logrotate.confファイルにこの内容があります。

/home/rails/myapp/log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 root root
}

しかし、私のログは決して回転しません。これは、「myapp/log/Production.log」ファイルで5月8日のエントリを見ることができてわかります。ログは毎日大きくなっています。ログを交換するにはどうすればよいですか?

答え1

まず、logrotateが自動的に実行されない可能性があります(通常はcronデーモンを介して)。

次に、/home/rails/myapp/log ファイルを回転させる logrotate 構成ファイルを指定しましたが、ls 出力には /home/rails/myapp/log/production.log ファイルが表示されます (私は ~rails -> /home/railsまた、所有者がroot:rootの新しい空のログファイルを生成するようにlogrotateに要求しましたが、ls出力では、ソースファイルはRails:railsの属性です。

tl;dr;代わりにこの設定ファイルを使用してください(そして時々cronまたは同様の方法でlogrotateが実行されていることを確認してください)。

/home/rails/myapp/log/production.log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 rails rails
}

また、回転したファイルを指すファイル記述子への書き込みを強制的に停止するには、postrotateを使用してアプリケーションを再起動する必要があります。

答え2

この試み。

/home/rails/myapp/log

{  
   su rails rails
   daily
   missingok
   compress
   notifempty
   rotate 12
   create
   delaycompress
   missingok
   }

/etc/logrotate.d/myappに入れてください。

説明はほとんどありません。 Logroatateは$ HOMEに記録されるため、myapp.logの循環はRailsで実行する必要があります。

su rails rails   

申し訳ありません。マンページで詳細を確認してください。

suユーザーグループは、デフォルトのユーザー/グループ(通常はroot)を使用するのではなく、このユーザーとグループに設定されているログファイルを循環します。 user は置換に使用されるユーザー名を指定し、group は置換に使用されるグループを指定します。ここで指定したユーザー/グループが、createディレクティブで指定した所有権を持つファイルを生成するための十分な権限を持っていないと、エラーが発生します。

所有者グループの回転直後(postrotateスクリプトを実行する前)に、ログファイル(回転したばかりのログファイルと同じ名前)を生成するスキーマ所有者グループを作成します。 modeはログファイルのモードを8進数で指定し(chmod(2)と同じ)、ownerはログファイルを所有するユーザー名を指定し、groupはログファイルが属するグループを指定します。すべてのログファイル属性は省略できます。この場合、新しいファイルのこれらの属性は、元のログファイルと同じ値を使用して省略された属性を表します。このオプションはnocreateオプションを使用して無効にできます。

申し訳ありません。英語ではもっとうまく説明できません。

関連情報