Die Situation ist: Wir haben eine Reihe von funktionierenden Anwendungsinstanzen, entwickelt unter C#
. Wir wollen, dass sie sich an einem Ort einloggen (das könnte eine Datei sein). Soweit ich weiß log4net
und NLog
können Protokolle über TCP senden. Das Problem ist - wie man diese Protokolle hört und speichert sie? Gibt es eine funktionierende Lösung, um diese Protokolle zu sammeln?Wie organisiere ich eine zentrale Protokollierung?
Antwort
In Log4Net Sie shoul appender konfigurieren, here official documentation siehe RemotingAppender
Für die TCP hören Sie TcpListener wie in this resource gibt es existieren einige Kunden für log4net like this
In NLog verwenden, sollten Sie die Database Ziel betrachten könnte . NLog hat einige andere Ziele, die Sie in Betracht ziehen könnten, einschließlich der LogReceiverService, die Protokollierungsnachrichten an einen WCF-Dienst oder Web-Service sendet, wo sie in einem der NLog-Ziele, einschließlich in einer Datei, protokolliert werden können. In Log4Net können Sie die AdoNetAppender betrachten. Konfigurationsbeispiele here.
Ich werde feststellen, dass ich in der Vergangenheit einen WCF-basierten LoggingService implementiert habe (der letztlich dem LogReceiverService von NLog ähnlich ist), was für mich gut funktionierte.
Es ist besser, die von MS zur Verfügung gestellte Funktion "Application Insights" zu verwenden. Es kann jede Sprache verwendet werden, nicht nur Microsoft-Sprachen. Application Insights ist in 2 Teile unterteilt. SDk für die Instrumentierung von Telemetrie (Protokolldaten) und Visualisierung dieser Protokolle in azurblauen Armaturenbrettern. SDK ist Opensource und Sie müssen für azurblaue Visualisierungswerkzeuge bezahlen. wenn Sie wollen nicht zahlen dann Anwendung insgists in Ihrem Code verwenden und diese Protokolle zu elastischen Stapel senden, das offen ist Quelle
die beste Architektur
MS Praktische Anwendung - für instrumentiert Protokolle
Apache Kafka - fungiert als eine Pipeline und als temporäre Vorrats-, senden Sie Ihre Protokolle
logstash-- einen Filter auf KAFKA, mit dem Sie
Elasticsearch log filtern können - eine keine sQL-Datenbank, wo die gefilterten Daten s tored
kibana - Dash Boards, die Daten von elastischen zieht und vizualisations.
können Sie auch Funken zu kafka Ausgang verknüpfen, um Warnungen in Form von E-Mails, Textnachrichten auszulösen.