Asp.net
如何使用身份驗證通過 NLog 或 SeriLog 登錄到 Elastic Search
我們目前正在使用 azure 規模集(一個源組上的許多 VM,具有負載平衡和一個可用性集),我們曾經使用 NLog 來記錄我們的 Web 應用程序操作和錯誤,但現在我們要求/需要使用 Elastic Search 並使用所有 azure vm 實例的集中日誌,而不是每個實例的文件。
我是 ES 和 LogStash 概念的新手,我需要用其他東西替換 NLog 嗎?以及我如何使用 ES 並將所有日誌統一為一個(我認為將 nlog 儲存在 azure 儲存表中作為統一結果,或者我需要使用 LogStash 還是您更喜歡其他東西)?
如上所述,在 azure 多 VM 上支持 .net 核心應用程序的最多日誌記錄是什麼?
請問有什麼幫助嗎?
由於您要登錄
ElasticSearch,因此最好使用支持結構化日誌記錄的日誌記錄框架,該框架適用於$$ NLog $$此功能在beta RTM中。 您可以將Serilog作為支持結構化日誌記錄的日誌框架。
還有用於 ElasticSearch 的 Serilog 接收器https://github.com/serilog/serilog-sinks-elasticsearch
您應該將這些 nuget 包添加到您的項目中:
Serilog Serilog.Sinks.ElasticSearch這是
Serilog下沉到的配置範常式式碼ElasticSearchvar logger = new LoggerConfiguration() .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200")) { ModifyConnectionSettings = x => x.SetBasicAuthentication(username, password); }) .CreateLogger();
對於 NLog,有一個使用 Elasticsearch.Net 包的目標“NLog.Targets.ElasticSearch”( nuget )。
用法:
<nlog> <extensions> <add assembly="NLog.Targets.ElasticSearch"/> </extensions> <targets> <target name="elastic" xsi:type="BufferingWrapper" flushTimeout="5000"> <target xsi:type="ElasticSearch" requireAuth="true" username="myUserName" password="coolpassword"/> </target> </targets> <rules> <logger name="*" minlevel="Info" writeTo="elastic" /> </rules> </nlog>參數文件:https ://github.com/ReactiveMarkets/NLog.Targets.ElasticSearch/wiki
請注意:
- 如果需要使用 Elasticsearch.Net 6(相當於 Elastic Search 版本 6 或更高版本),則需要 NLog.Targets.ElasticSearch 版本 5。
- 對於 Elasticsearch.Net 5,您需要使用 NLog.Targets.ElasticSearch 4