2012-06-20 62 views
2

我正在使用標記日誌記錄與Unicorn並在我的環境文件中使用以下配置。Rails Tagged Logging

config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) 
config.log_tags = [:uuid] 

到目前爲止好。

當涉及到標籤,是有辦法 -

  1. 打印出特定的請求頭

  2. 打印自定義的UUID,即東西,我可以生成。導軌吐出的默認UUID太長。

回答

1

見從這個要點這裏https://gist.github.com/2513183

一些例子可以一個進程添加到log_tags陣列,它可以訪問請求對象。

可以生成在PROC一個UUID,或者您也可以通過request.env從你的ApplicationController中的before_filter傳遞的東西,就像這樣:

#application_controller.rb 
before_filter :set_some_request_env 

def set_some_request_env 
    request.env['some_var'] = "Happy" 
end 

# application.rb 
config.log_tags = [ 
    -> request { 
    request.env['some_var'] 
    } 
] 

更新

可以使用#tagged方法爲在給定塊內發送的所有日誌消息添加標籤。

爲了讓您的請求或控制器PARAMS參數爲標記的輸出,你可以做到以下幾點:

#application_controller.rb 
around_filter :add_tags_to_logs 

def add_tags_to_logs 
    Rails.logger.tagged(custom_uuid_for_current_user) do 
    yield 
    end 
end 
+0

使用Rails 4.2.6,之前由控制器處理查詢的標籤是這樣計算你的價值將不會被設置。 –