在Rails 3.0中使用rsyslogd

时间:2012-05-29 07:10:58

标签: ruby-on-rails rsyslog

我在Debian服务器上运行了几个Rails 3.0站点。目前所有日志都进入RAILS_ROOT / log / production.log(每个站点为RAILS_ROOT)

我想更改它,以便所有日志记录都通过rsyslog并放在:

/var/log/rails/site1.log
/var/log/rails/site2.log
etc.

并且每天都会自动轮换这些日志。

这是怎么做到的?

/ Carsten

1 个答案:

答案 0 :(得分:15)

过去我曾使用syslog-logger宝石作为此

您可以在初始值设定项中进行设置:

config.logger = Logger::Syslog.new("site1", Syslog::LOG_LOCAL5)

在最近的ruby版本中,标准库中还有syslog/logger - 用法几乎相同。

开始记录到syslog而不是默认文本文件。接下来发生的是系统日志配置 - 您需要创建定义数据所在位置的rsyslog规则

最简单的可能是

!site1 /var/log/site1.log

使用程序名称“site1”(Logger :: Syslog的第一个参数)指向所有内容。

您可以执行更多操作,例如,您可以将日志消息转发到中央日志服务器,将它们全部聚合到一个文件中,这样您就不会在每个应用程序实例的一个日志文件中使用Iook。

对于日志轮换我使用logrotate - 我相信rsyslog实际上可以在内部处理那种东西,但我不知道细节。