2010-11-18 9 views

答えて

3

あなたはRailsアプリケーションのログローテーションについて話している場合は、ご使​​用の環境ファイルで

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

を入れていることを行うことができます。 2番目の引数は、保持したい.logファイルの数で、3番目はファイルが回転する前に到達できるバイト単位のサイズです。この構成は、1メガバイトの10個のファイルを意味します。おそらくlogrotate(圧縮などはサポートしていません)と同様に設定可能ではありませんが、すべてのログファイルをアプリケーション内に保存できます。これは通常私のために働く。

found thisまた、nginx経由でログのローテーションを行いたい場合は、

+1

ありがとう、私はレールがこのオプションを持っていることに気付かなかった。 – Chamnap

+1

私は個人的にレールのローテーションがヒットするか、見つからないことを発見しました。回転後に古いファイルへのロギング時にレールロガーが動かなくなることがあります。 – Addy

+3

これに注意してください。複数のRailsインスタンスをPassenger(つまりPassengerMinInstances)で実行していて、PassengerMaxRequestsがPassenger設定に設定されている場合は、Railsプロセスの新しいスポーン新しいファイルが作成されます。 「config.logger = Logger.new(config.log_path、14、200000000)」という設定をしていましたが、ロードに基づいて14のインスタンスが1日を通して上下に回転するため、1日分のログしか保持しませんでした毎回新しいファイルを作成します。彼らはほとんど200000000の最大サイズを打つことはほとんどありませんでした。 – Harmon

25

のlogrotateの設定が

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

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

+0

私にはなぜ後回転スクリプトがないのだろうかと思います。これに問題がありますか? – Chamnap

+0

私はこの構成のプロダクションサーバーを持っています。 – Addy

+0

これは正解でなければなりません。 – Karl