Ich baue einen Webserver in Golang. Sie wissen, Golang hat ein context
Paket und es ist offically recommended immer einen Kontext als erstes Argument übergeben. context.Context
hat eine Value
Methode, Variablen in einem Kontext zu halten.Wie kann der Logger zusammen mit dem Kontext verwendet werden?
Die meisten Logging-Bibliotheken bieten jedoch auch eine Möglichkeit, Logger zu erben, zum Beispiel Kind Logger mit Feldern von seinem Elternteil erstellen. In logrus (oder einem anderen Logger, spielt keine Rolle), können Sie eine logrus.Entry
erstellen und WithFields
anwenden, um eine Kind-Logger zu erhalten.
Zum Beispiel, wenn jede HTTP-Anfrage kommt eine request-id
ist angeschlossen. Ich hoffe, dass es in Zusammenhang gebracht und auch als ein Feld in jedem Protokoll protokolliert wird.
Also, wie man das richtig macht?
DANKE !!
Haben Sie versucht, es zu tun tatsächlich oder fragen Sie einfach für uns, es für Sie zu tun? – DallaRosa
Während ein 'Context' einen Ausführungskontext zur Verfügung stellt, kann er viel mehr tun, insbesondere die Löschung. Warum denken Sie, dass "Context" der geeignetste Weg wäre, abgeleitete Logger zu handhaben? (Es ist nicht.) – Volker
Ich mache ziemlich genau, wovon Sie sprechen. Ich habe eine Middleware, die einen "logrus.Entry" mit Sitzungs- und Anforderungsinformationen (URL, Anforderungs-ID usw.) einrichtet. Dann habe ich einen eigenen Log-Pkg mit einer Funktion, die einen Kontext nimmt und einen 'logrus.Entry' zurückgibt, wenn er einen' logrus.Entry' für den Kontext findet, den er benutzt, wenn er nicht einen neuen erzeugt. – jmaloney