Asp.net

如何使用身份驗證通過 NLog 或 SeriLog 登錄到 Elastic Search

  • August 14, 2021

我們目前正在使用 azure 規模集(一個源組上的許多 VM,具有負載平衡和一個可用性集),我們曾經使用 NLog 來記錄我們的 Web 應用程序操作和錯誤,但現在我們要求/需要使用 Elastic Search 並使用所有 azure vm 實例的集中日誌,而不是每個實例的文件。

我是 ES 和 LogStash 概念的新手,我需要用其他東西替換 NLo​​g 嗎?以及我如何使用 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下沉到的配置範常式式碼ElasticSearch

var 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

引用自:https://stackoverflow.com/questions/49595422