7 Stimmen

Was sind die NDC-Protokolle und wie können wir sie in unserer Anwendung verwenden und was ist ihre Bedeutung

Was sind die NDC-Protokolle und wie können wir sie in unserer Anwendung verwenden und was ist deren Bedeutung...

6voto

Brian Agnew Punkte 260470

Verschachtelte Diagnosekontexte sind spezifisch für einen Thread.

Übliche Verwendungen sind das Aufzeichnen von Informationen pro Sitzung (wenn ein Thread für eine Sitzung verwendet wird), damit Sie den Ursprungsclient, Benutzernamen usw. und andere übergreifende Attribute protokollieren können, ohne:

  1. diese Attribute durch die Schichten Ihrer Anwendung zu übergeben
  2. sie in jeder Protokollanweisung explizit zu protokollieren. Log4j gibt den NDC aus, wenn PatternLayout entsprechend konfiguriert ist.

Siehe auch die Mapped Diagnostic Contexts von Log4j.

3voto

Nathan Hughes Punkte 90344

NDC steht für "Nested Diagnostic Contexts" und ist eine Funktion von log4j. Die häufigste Verwendung von log4j besteht einfach darin, Dinge zu protokollieren, ohne darauf hinzuweisen, zu welchem Client-Anforderung es gehört. Wenn Ihre Anwendung in der Produktion mit gleichzeitigen Anforderungen ausgeführt wird, werden alle Protokollmeldungen für alle Anforderungen im Protokolldatei durcheinandergebracht, und es ist unmöglich zu sagen, wer was getan hat. NDC ermöglicht es Ihnen, Protokollmeldungen als zu bestimmten Clients gehörend zu kennzeichnen, damit Sie unterscheiden können, wer was tut, ohne separate Logger für jeden Client zu haben.

3voto

ewernli Punkte 37122

Logger werden in der Regel im Code statisch definiert, was es manchmal schwierig macht, Logs zu verstehen.

Der NDC ermöglicht es, dynamisch einen Parameter zu push, der in jeder nachfolgenden Log-Zeile angezeigt wird, die vom Thread ausgegeben wird, bis er popt wird.

Nützlich, wenn Sie ein Log wie dieses möchten:

[request=x] a
[request=y] a
[request=x] b
[request=x] c
[request=y] b
[request=x] d
[request=y] c
[request=y] d

(Haftungsausschluss: Ich erinnere mich nicht an das genaue Format)

Mit nur a,b,c,d ist es schwer zu verstehen, welcher Thread was macht. Wenn Sie die Anforderungs-ID dynamisch pushen und popen, ist es einfacher zu verfolgen. Kann auch für andere Arten von kontextbezogenen Informationen verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X