2012-04-10 45 views
2

我們正在haproxy後面運行rails項目。每秒都會有一個保持活動狀態發送到應用程序。這導致了非常嘈雜的日誌文件,這使得挖掘有點痛苦,並使其不必要的大。更改單個控制器的日誌級別或導軌中的動作

我的第一個想法是將該操作的日誌級別更改爲調試,但其他人提議更改日誌級別around_filter。我對這個想法並不滿意,但它可能就是我實現它的原因。我對不同的解決方案持開放態度,但一般要求是我可以安靜地執行這些操作,但是如果我需要以任何理由查看它們,我可以更改日誌記錄級別。

+0

我看到你的問題,但我認爲過濾器選項是我眼中最簡單的解決方案。使用'before_filter'來提高'after_filter'的日誌級別來重置它。其他一切都很複雜...... – klump 2012-04-10 01:33:44

+0

我知道「log4j」可以很容易地做到這一點,但我不確定'log4r'是否可以做到這一點。等待別人的建議。 – 2012-04-10 01:34:13

+0

Mhh,如果您需要輸出,您可以始終使用比默認更低的日誌級別,並降低默認日誌級別。如果沒有較低的日誌級別,請嘗試黑客入侵系統。 – klump 2012-04-10 02:07:34

回答

4

另一種解決方案是插入一些Rack中間件,它處理保持活動檢查之前它到達Rails ApplicationController生命週期。

第1步:製作一些響應保持活動檢查的中間件。在我的例子保活請求是GET /health-check所以它看起來像:

class HealthCheckMiddleware 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if env['PATH_INFO'] == '/health-check' 
     return [200, {}, ['healthy']] 
    end 
    @app.call(env) 
    end 
end 

當然,這種健康檢查根據需要進行調整。也許你需要檢查其他請求/ CGI變量...

第2步:確保你之前的Rails插入此中間件::架::記錄儀

config.middleware.insert_before Rails::Rack::Logger, "HealthCheckMiddleware" 

現在您的中間件將處理健康檢查和您的日誌已完全繞過。

+0

現在這是一個原創的想法,讓我用這個工作來試圖讓這個工作。 – 2012-04-23 20:53:49

+0

像魅力一樣工作,謝謝! – 2012-04-25 17:54:50

+0

甜美!我得到賞金嗎? :) – 2012-04-26 04:46:35

相關問題