2012-01-16 69 views
8

儘管很少,而和不明確的文件和初學者有效的操作方法,我也漸漸喜歡PSGI,我目前使用它在我的應用程序之一。我想知道的是如何在多節點應用程序中管理日誌記錄?什麼被認爲是關於登錄PSGI的「最佳實踐」?PSGI記錄(Perl的)

+6

[Plack :: Middleware :: AccessLog](http://p3rl.org/Plack::Middleware::AccessLog) – 2012-01-16 18:08:07

+0

您是在談論訪問日誌還是一般登錄? – 2012-05-01 16:37:48

回答

5

我建議使用Plack::Middleware::AccessLog用於記錄訪問和Plack::Middleware::LogDispatch自定義日誌記錄。 他們都使用流行的Log::Dispatch模塊。

LogDispatch中間件文檔當前未告訴您如何在設置日誌記錄對象後使用 。這裏有一個例子:

my $app = sub { 
    my $env = shift; 
    $env->{'psgix.logger'}->({ level => "debug", message => "This is debug" }); 
    return [ 200, [], [] ]; 
}; 

爲了解決多點關心,你可以再使用Log::Dispatch::Syslog這將發送記錄到rsyslog這可能依次傳遞到另一個服務器rsyslog現在的日誌數據。通過這種方式,所有節點都可以登錄到單箇中央日誌記錄服務器。

使用日誌::調度的靈活性,你還必須在本地和遠程登錄 冗餘,如果你喜歡的選項。日誌發送到 中央服務器可以被認爲是主要的,並且記錄完成 本地可以考慮備份,以防中央日誌服務器是 下來了一點。

使用中央日誌服務器有幾個優點:

  1. 可以跨在一個地方整個集羣「的grep」你的日誌。
  2. 循環使用日誌和分析是一組日誌文件簡單。
  3. 你更好地準備擴大集羣上下,你可以關閉一個節點關閉而不必擔心丟失記錄,或保留在服務器上只是讓隔夜cron作業能火來處理日誌。

我目前一起使用Log :: Dispach和Rsyslog以這種方式來自己管理多節點集羣。