2012-05-29 58 views
7

我在Debian服務器上運行了幾個Rails 3.0站點。目前,所有日誌進入RAILS_ROOT /日誌/ production.log(RAILS_ROOT爲每個站點)在Rails 3.0中使用rsyslogd

我想改變這一點,讓所有的日誌經過rsyslog現在和被放置在:

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

而且還讓這些日誌每天自動旋轉。

這是如何完成的?

/卡斯滕

回答

14

在過去,我已經使用了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的第一個參數)。

您還可以做更多事情,例如,您可以將日誌消息轉發到中央日誌記錄服務器,這些服務器將它們彙總到一個文件中,這樣您就不必在每個應用實例的一個日誌文件中找到Iook 。

對於日誌旋轉我使用logrotate - 我相信rsyslog實際上可以在內部處理這種東西,但我不知道細節。

+0

非常抱歉,我還沒有評論過這個 - 沒有看到,有一個答案。我會在下週嘗試這個 - 謝謝! –

+0

Syslog :: LOG_LOCAL5 - 這裏沒有錯別字嗎? –

+0

只是錯過了一個結束)。除此之外,它直接來自生產應用程序的配置文件。 –