Dodaję usystematyzowane logowanie do aplikacji Rails 4. Używając lograge i , jak opisuję w this article, mam rzeczy w większości działające.Z Rails 4 i logowaniem strukturalnym, w jaki sposób mogę dodać pole identyfikatora żądania do logów?
Mam problem z dodaniem identyfikatora żądania do dzienników. Najbliższy znalazłem jest dodanie tego do config/${ENV}.rb
:
config.log_tags = [:uuid]
Ale to dodaje identyfikator żądania do listy tagów, zamiast dodawania go jako pole o nazwie.
{
"tags": [
"da76b4be-01ae-4cc4-8d3c-87062ea02cfe"
],
"host": "services",
"severity": "DEBUG",
"@version": "1",
"@timestamp": "2016-09-13T17:24:34.883+00:00",
"message": "..."
}
Jest to problematyczne. To sprawia, że bardziej niewygodne i mniej oczywiste, w jaki sposób szukać konkretnego identyfikatora wniosku. Ponadto parsowanie komunikatu w logstash powoduje nadpisanie wszystkich innych znaczników, które są już powiązane z komunikatem dziennika.
Czy jest jakiś sposób, aby dodać identyfikator żądania do dziennika jako nazwanego pola?
{
"request_id", "da76b4be-01ae-4cc4-8d3c-87062ea02cfe",
"host": "services",
"severity": "DEBUG",
"@version": "1",
"@timestamp": "2016-09-13T17:24:34.883+00:00",
"message": "..."
}
Próbowałem tego, ale hash 'payload' nie ma pola uuid. W dziennikach mam tylko "uuid": null'. – leedm777
Znalazłem, że potrzebujesz 'append_info_to_payload' zdefiniowanego w' ApplicationController', aby to działało (zobacz https://github.com/roidrage/lograge/blob/master/README.md). Ale to tylko dodaje pola niestandardowe do dzienników dostępu. Aby identyfikator UUID był użyteczny, musi znajdować się we wszystkich dziennikach powiązanych z tym żądaniem (w ten sam sposób, w jaki Railsy umieszczają tagi przy każdym wpisie dziennika). – leedm777