1. ホーム
  2. ruby-on-rails

[解決済み] Ruby on Railsのプロダクションログのローテーション

2022-04-20 10:20:12

質問

Ruby on Railsの本番アプリでログローテーションを有効にする最良の方法は何ですか?

ホスティングサーバーでlogrotateを使用するのか、アプリからloggerを初期化する際に使用するオプションがあるのでしょうか?

解決方法は?

オプション1: syslog + logrotate

システムログツールを使用するように rails を設定することができます。

の例です。 config/environments/production.rb .

# Use a different logger for distributed setups
config.logger = SyslogLogger.new

この方法では、syslogにログを記録し、デフォルトのlogrotateツールを使ってログをローテートすることができます。

オプション2:通常のRailsログ+logrotate

もう一つの選択肢は、railsが残したログを拾うようにlogrotateを設定するだけです。 UbuntuやDebianでは、例えば以下のようなファイルになります。 /etc/logrotate.d/rails_example_com .

/path/to/rails.example.com/tmp/log/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    copytruncate
}

以下の提案にあるように、Railsでは copytruncate Railsアプリを再起動する必要がないようにするためです。

編集: "sharedscripts/endscript" は、ここでは使われておらず、コメントによると問題を引き起こすので削除しました。また create 640 root adm コメント通りです。