Was sind die NDC-Protokolle und wie können wir sie in unserer Anwendung verwenden und was ist deren Bedeutung...
Antworten
Zu viele Anzeigen?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:
- diese Attribute durch die Schichten Ihrer Anwendung zu übergeben
- 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.
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.
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 pop
t 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 push
en und pop
en, ist es einfacher zu verfolgen. Kann auch für andere Arten von kontextbezogenen Informationen verwendet werden.