nginxを再起動しなくてもlogrotateを実行することができます(USR1シグナルをnginxに送信するだけです)。私はそれが私のレールアプリ(nginxの乗客)のために可能性があるのだろうか。 logrotateをするだけで私のレールアプリを再起動する価値はありません。再起動せずにnginxの乗客とレールアプリを回転させることは可能ですか?
4
A
答えて
3
あなたはRailsアプリケーションのログローテーションについて話している場合は、ご使用の環境ファイルで
config.logger = Logger.new(config.log_path, 10, 1024**2)
を入れていることを行うことができます。 2番目の引数は、保持したい.logファイルの数で、3番目はファイルが回転する前に到達できるバイト単位のサイズです。この構成は、1メガバイトの10個のファイルを意味します。おそらくlogrotate(圧縮などはサポートしていません)と同様に設定可能ではありませんが、すべてのログファイルをアプリケーション内に保存できます。これは通常私のために働く。
found thisまた、nginx経由でログのローテーションを行いたい場合は、
25
のlogrotateの設定が
/path/to/rails_apps/*/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
}
copytruncate
基本的にコピーし、新しいファイルにコンテンツを、これを降りるために非常に単純ですし、古いファイルを切り捨てます。これにより、再起動の必要がなくなります。
ありがとう、私はレールがこのオプションを持っていることに気付かなかった。 – Chamnap
私は個人的にレールのローテーションがヒットするか、見つからないことを発見しました。回転後に古いファイルへのロギング時にレールロガーが動かなくなることがあります。 – Addy
これに注意してください。複数のRailsインスタンスをPassenger(つまりPassengerMinInstances)で実行していて、PassengerMaxRequestsがPassenger設定に設定されている場合は、Railsプロセスの新しいスポーン新しいファイルが作成されます。 「config.logger = Logger.new(config.log_path、14、200000000)」という設定をしていましたが、ロードに基づいて14のインスタンスが1日を通して上下に回転するため、1日分のログしか保持しませんでした毎回新しいファイルを作成します。彼らはほとんど200000000の最大サイズを打つことはほとんどありませんでした。 – Harmon