2016-09-13 51 views
10

Rails 4 uygulamasına yapılandırılmış günlük ekliyorum. this article numaralı belgede açıklandığı gibi lograge ve logstash-logger'u kullanarak, çoğunlukla işlerim var.Raylar 4 ve yapılandırılmış günlük kaydı ile, istek kimliği alanını günlüklere nasıl ekleyebilirim?

Günlüklere istek kimliği eklerken sorun yaşıyorum. Bulduğum en yakın config/${ENV}.rb bu eklemektir:

config.log_tags = [:uuid] 

Ama bu yerine adlandırılmış alanı olarak ekleme, etiket listesine istek kimliği ekler.

{ 
    "tags": [ 
    "da76b4be-01ae-4cc4-8d3c-87062ea02cfe" 
    ], 
    "host": "services", 
    "severity": "DEBUG", 
    "@version": "1", 
    "@timestamp": "2016-09-13T17:24:34.883+00:00", 
    "message": "..." 
} 

Bu sorunludur. Belirli bir istek kimliğinin nasıl aranacağı konusunda daha garip ve daha az belirgin hale getirir. Ayrıca, mesajı logstash'da ayrıştırmak, günlük mesajıyla zaten ilişkilendirilmiş olan diğer etiketlerin üzerine yazar.

İstek kimliğini, adlandırılmış alan olarak günlüğe ekleyebileceğim bir yol var mı?

{ 
    "request_id", "da76b4be-01ae-4cc4-8d3c-87062ea02cfe", 
    "host": "services", 
    "severity": "DEBUG", 
    "@version": "1", 
    "@timestamp": "2016-09-13T17:24:34.883+00:00", 
    "message": "..." 
} 

cevap

1

Bunu yapmanın birkaç yolu vardır.

# all your lograge stuff... 
    config.lograge.enabled = true 

    config.lograge.custom_options = lambda do |event| 
    # use the `event.payload` 
    {uuid: event.payload[:uuid]} 
    end 

Buraya herhangi bir seçenek aşırı - onlar lib en olanlar üzerinde alacağım: Lograge itibaren, custom_options kullanabilirsiniz.

Bu kodun sorumluluğu here'dir. Çalıştığını gösteren test here'dur.

+0

Bunu denedim, ancak 'yük boşluğu' hashunun hiçbir uuid alanı yok. Ben sadece "uuid" aldım: günlüklerimde null. – leedm777

+0

Bunun için “ApplicationController” içinde tanımlanmış olan 'append_info_to_payload' 'öğesinin gerekli olduğunu buldum (bkz. Https://github.com/roidrage/lograge/blob/master/README.md). Ancak bu yalnızca özel alanları erişim günlüklerine ekler. UUID'nin faydalı olması için, bu istekle ilişkili tüm günlüklerde olması gerekir (Rails etiketlerini her kayıt girişine koyar). – leedm777