H2o: Logging-Handler

Erstellt am 16. Dez. 2017  ·  7Kommentare  ·  Quelle: h2o/h2o

Ich habe den mruby-Handler zum Formatieren/Kontrollieren des Zugriffsprotokolls geschrieben.
aber ich muss jedem Tonnen Pfad die Direktive mruby-handler-file hinzufügen: in h2o conf.

Es scheint besser zu sein, das Hinzufügen eines Handlers zur Zugriffsprotokolldirektive zuzulassen und jede Anforderung/Antwort in diesem Bereich anzuwenden.

Anwendungsfall:

  • Hinzufügen aller Anforderungsheader zum Zugangsprotokoll
  • Formatieren von Werten in json/ltsv usw. über einen Handler
  • Routing/Rotation der Protokolldatei vom Handler

Hilfreichster Kommentar

Habe mit \n ) oder Antwort-Header zu protokollieren.

Alle 7 Kommentare

Hallo @Jxck
die meisten der Dinge, die Sie erwähnt haben, können bereits erledigt werden, sind aber möglicherweise etwas unterdokumentiert.
Das Rotieren von Logdateien sollte über eine Pipe erfolgen, ich habe kürzlich versucht, die Dokumentation hier ein wenig zu verbessern:
https://github.com/h2o/h2o/pull/1528

die Formatierung der Logs über json kann bereits über escape: json

Das Protokollieren aller Header sollte auf jeden Fall möglich sein, ist es aber nicht. iirc Ich habe einmal ein Ticket geöffnet, kann es aber gerade nicht finden. Momentan mache ich diesen Hack in mruby:

headers = JSON.dump(env.find_all{|k,v| k.start_with?("HTTP_")})
[200, {  "x-fallthru-set-MRB_HEADERS" => headers }, [result]]

und logge dich dann ein über:

access-log: 
  path: /dev/stdout
  format: '{ "requestHeaders": %{MRB_HEADERS}e }'
  escape: json

Ich denke nicht, dass Ihre Idee, für jeden Anruf mruby-Code aufzurufen, nur um die Protokolle zu manipulieren, sinnvoll ist, es wäre zu teuer.

Der Punkt meines Problems ist nicht, wie man einen Handler schreibt, sondern wie man ihn auf path anwendet.
wie ich geschrieben habe

aber ich muss jedem Tonnen Pfad die Direktive mruby-handler-file hinzufügen: in h2o conf.

und

es wäre zu teuer.

das hängt vom Anwendungsfall ab.
logger gilt bereits für je req/res an den Server, wenn Sie access-log aktivieren.

@Jxck es ist mir dann nicht wirklich klar, was das Problem ist.

Könnten Sie vielleicht Ihre aktuelle Problemumgehung erklären und eine Beispielkonfiguration erstellen, wie es Ihrer Meinung nach besser gemacht werden könnte?

Habe mit \n ) oder Antwort-Header zu protokollieren.

@kazuho freut sich darauf, sie zu sehen!

@kazuho
Wäre auch toll, wenn es einen Json-Modus gäbe, entweder als Objekt oder Array von Arrays.
Ich logge sie derzeit auch über mruby ein, aber es ist hässlich, da sie nicht im Originalformat vorliegen

irgendwelche Updates?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

utrenkner picture utrenkner  ·  7Kommentare

paulpref picture paulpref  ·  5Kommentare

voiddeveloper picture voiddeveloper  ·  6Kommentare

utrenkner picture utrenkner  ·  3Kommentare

basbebe picture basbebe  ·  3Kommentare