syslog-ngでrailsのログを集約する方法について

Sysloggerのインストール

Sysloggerをインストールする。

sudo gem install SyslogLogger

rails側の設定

config/environments/production.rb

以下を追記する。

require 'syslog_logger'
RAILS_DEFAULT_LOGGER = SyslogLogger.new "appname"
config/environment.rb

以下を追記する。

RAILS_DEFAULT_LOGGER ||= Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log")

syslog-ngの設定

/opt/syslog-ng/etc/syslog-ng.conf

以下を追記する。

destination d_rails_local { file("/var/log/appname.rails.production.${YEAR}${MONTH}${DAY}.log"); };
filter f_rails_log  { program("appname.*"); };
log { source(s_local); filter(f_rails_log);  destination(d_rails_local); };

環境

$ ruby -v
ruby 1.8.6 (2009-03-31 patchlevel 368) [i686-linux]
$ rails -v
Rails 1.0.0
$ cat /etc/redhat-release
CentOS release 5 (Final)

SyslogLogger (1.4.0)
    SyslogLogger is a Logger replacement that logs to syslog.  It is
    almost drop-in with a few caveats.