7

私はDebianサーバー上でいくつかのRails3.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-loggergemを使用しました

これはイニシャライザで設定できます。

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

最近の ruby​​ バージョンでsyslog/loggerは、標準ライブラリにもあります - 使い方はほとんど同じです。

デフォルトのテキスト ファイルではなく、syslog へのロギングを開始します。次に起こるのは、syslog の設定です。データの行き先を定義する rsyslog ルールを作成する必要があります。

最も簡単なことは次のようなものです

!site1 /var/log/site1.log

これは、プログラム名「site1」(Logger::Syslog の最初の引数) ですべてを指示します。

できることは他にもたくさんあります。たとえば、ログ メッセージを中央のログ サーバーに転送して、ログ メッセージをすべて 1 つのファイルに集約し、アプリ インスタンスごとに 1 つのログ ファイルを探す必要がないようにすることができます。

ログのローテーションにはlogrotateを使用します.rsyslogは実際にそのようなものを内部的に処理できると思いますが、詳細はわかりません.

于 2012-05-29T17:26:28.340 に答える