6

nginx を再起動せずに logrotate を実行することができます (nginx に USR1 シグナルを送信するだけでジョブが実行されます)。私のレールアプリ(nginx Passenger)でそれが可能なのだろうか。logrotate を実行するためだけに Rails アプリを再起動する価値はありません。

4

2 に答える 2

28

logrotate の設定は非常に簡単です。

/path/to/rails_apps/*/shared/log/*.log {
  daily
  missingok
  rotate 30
  compress
  delaycompress
  copytruncate
}

基本的に、コンテンツを新しいファイルにコピーし、copytruncate古いファイルを切り捨てます。これにより、再起動の必要がなくなります。

于 2011-04-12T03:44:16.963 に答える
3

Rails アプリケーション ログのローテーションについて話している場合は、

 config.logger = Logger.new(config.log_path, 10, 1024**2)

環境ファイルで。2 番目の引数は保持する .log ファイルの数で、3 番目はファイルがローテーションされる前に到達できるバイト単位のサイズです。この構成は、1 メガバイトの 10 個のファイルを意味します。おそらく logrotate ほど設定可能ではないかもしれませんが (圧縮などはサポートされていません)、すべてのログ ファイルをアプリ内に保持できます。これは通常私にとってはうまくいきます。

また、nginx 経由でログのローテーションに固執したい場合は、これを見つけました。

于 2010-11-18T04:19:01.110 に答える