Bas*_*maa 4 asp.net nlog elasticsearch logstash serilog
我们目前使用的是Azure规模集(一个源组上的许多VM具有负载平衡和一个可用性集),我们曾经使用NLog来记录Web应用程序的操作和错误,但现在我们要求/需要使用Elastic Search,并且还使用所有Azure虚拟机实例的集中式日志,而不是每个实例的文件。
我是ES和LogStash概念的新手,是否需要用其他东西代替NLog?以及如何使用ES并统一所有日志(我想将nlog存储在azure存储表中作为统一结果,还是我需要使用LogStash还是您更喜欢其他东西)?
如上所述,在Azure多个VM上提供对.net核心应用程序支持的最多记录是什么?
有什么帮助吗?
对于NLog,有一个目标“ NLog.Targets.ElasticSearch”(nuget),它使用Elasticsearch.Net包。
用法:
<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>
Run Code Online (Sandbox Code Playgroud)
参数的文档:https : //github.com/ReactiveMarkets/NLog.Targets.ElasticSearch/wiki
请注意:
许多建议,应用程序不应直接写入ElasticSearch,而应仅写入本地文件。
然后使用服务(例如FileBeat)将日志文件的内容上载到ElasticSearch。
这将优化到ElasticSearch实例(批量)的网络流量,并确保在由于维护而重启网络或ElasticSearch实例的问题时不会丢失日志记录。
由于您要登录ElasticSearch,因此最好使用支持结构化日志记录的日志记录框架,对于NLog,此功能位于beta RTM中。
您可以Serilog作为支持结构化日志记录的日志记录框架。
还有Elasticsearch的Serilog接收器https://github.com/serilog/serilog-sinks-elasticsearch
您应该将这些nuget包添加到您的项目中:
Serilog
Serilog.Sinks.ElasticSearch
Run Code Online (Sandbox Code Playgroud)
这是serilog配置下沉到Elasticsearch的示例代码
var logger = new LoggerConfiguration()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200"))
{
ModifyConnectionSettings = x => x.SetBasicAuthentication(username, password);
})
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5856 次 |
| 最近记录: |