我們正在haproxy後面運行rails項目。每秒都會有一個保持活動狀態發送到應用程序。這導致了非常嘈雜的日誌文件,這使得挖掘有點痛苦,並使其不必要的大。更改單個控制器的日誌級別或導軌中的動作
我的第一個想法是將該操作的日誌級別更改爲調試,但其他人提議更改日誌級別around_filter
。我對這個想法並不滿意,但它可能就是我實現它的原因。我對不同的解決方案持開放態度,但一般要求是我可以安靜地執行這些操作,但是如果我需要以任何理由查看它們,我可以更改日誌記錄級別。
我們正在haproxy後面運行rails項目。每秒都會有一個保持活動狀態發送到應用程序。這導致了非常嘈雜的日誌文件,這使得挖掘有點痛苦,並使其不必要的大。更改單個控制器的日誌級別或導軌中的動作
我的第一個想法是將該操作的日誌級別更改爲調試,但其他人提議更改日誌級別around_filter
。我對這個想法並不滿意,但它可能就是我實現它的原因。我對不同的解決方案持開放態度,但一般要求是我可以安靜地執行這些操作,但是如果我需要以任何理由查看它們,我可以更改日誌記錄級別。
另一種解決方案是插入一些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"
現在您的中間件將處理健康檢查和您的日誌已完全繞過。
現在這是一個原創的想法,讓我用這個工作來試圖讓這個工作。 – 2012-04-23 20:53:49
像魅力一樣工作,謝謝! – 2012-04-25 17:54:50
甜美!我得到賞金嗎? :) – 2012-04-26 04:46:35
我看到你的問題,但我認爲過濾器選項是我眼中最簡單的解決方案。使用'before_filter'來提高'after_filter'的日誌級別來重置它。其他一切都很複雜...... – klump 2012-04-10 01:33:44
我知道「log4j」可以很容易地做到這一點,但我不確定'log4r'是否可以做到這一點。等待別人的建議。 – 2012-04-10 01:34:13
Mhh,如果您需要輸出,您可以始終使用比默認更低的日誌級別,並降低默認日誌級別。如果沒有較低的日誌級別,請嘗試黑客入侵系統。 – klump 2012-04-10 02:07:34