7

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

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

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

并且还要让这些日志每天自动轮换。

这是怎么做到的?

/ 卡斯滕

4

1 回答 1

15

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

您可以在初始化程序中进行设置:

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

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

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

最简单的可能是

!site1 /var/log/site1.log

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

您可以做更多事情,例如,您可以将日志消息转发到中央日志服务器,该服务器将它们全部聚合到一个文件中,这样您就不必为每个应用程序实例查看一个日志文件。

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

于 2012-05-29T17:26:28.340 回答