当前位置:主页 > 查看内容

ElasticSearch+NLog实现.Net Core分布式日志管理

发布时间:2021-04-26 00:00| 位朋友查看

简介:本文转载自微信公众号「UP技术控」,作者conan5566。转载本文请联系UP技术控公众号。 概述 Elasticsearch可广泛应用于日志分析、全文检索、结构化数据分析等多种场景,大幅度降低维护多套专用系统的成本,在开源社区非常受欢迎。在系统中,如果将日志作为文……

本文转载自微信公众号「UP技术控」,作者conan5566。转载本文请联系UP技术控公众号。   

概述

Elasticsearch可广泛应用于日志分析、全文检索、结构化数据分析等多种场景,大幅度降低维护多套专用系统的成本,在开源社区非常受欢迎。在系统中,如果将日志作为文件输出,查看系统日志将非常不便;如果将日志保存到数据库中,又不能进行全文搜索。在这里我们将日志输出到ElasticSearch中,借助Kibana再查找日志。

实现方式

1、配置es服务地址

  1.   "ConnectionStrings": { 
  2.     "ElasticSearchServerAddress""http://localhost:9200" 
  3.   }, 
  4.   "Logging": { 
  5.     "LogLevel": { 
  6.       "Default""Warning" 
  7.     } 
  8.   }, 
  9.   "AllowedHosts""*" 

2、配置nlog.config

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.       internalLogToConsole="true"
  5.   <extensions> 
  6.     <add assembly="NLog.Targets.ElasticSearch"/> 
  7.   </extensions> 
  8.  
  9.   <targets> 
  10.     <!--ElasticSearch保存日志信息--> 
  11.     <target name="ElasticSearch" xsi:type="ElasticSearch" ConnectionStringName="ElasticSearchServerAddress" 
  12.             index="userapi-${date:format=yyyy.MM.dd}" documentType="doc" includeAllProperties="true" 
  13.                  layout="[${date:format=yyyy-MM-dd HH\:mm\:ss}][${level}] ${logger} ${message} ${exception:format=toString}"
  14.       <field name="MachineName" layout="${machinename}" /> 
  15.       <field name="Time" layout="${longdate}" /> 
  16.       <field name="level" layout="${level:uppercase=true}" /> 
  17.       <field name="logger" layout=" ${logger}" /> 
  18.       <field name="message" layout=" ${message}" /> 
  19.       <field name="exception" layout=" ${exception:format=toString}" /> 
  20.       <field name="processid" layout=" ${processid}" /> 
  21.       <field name="threadname" layout=" ${threadname}" /> 
  22.       <field name="stacktrace" layout=" ${stacktrace}" /> 
  23.       <field name="Properties" layout="${machinename} ${longdate} ${level:uppercase=true} ${logger} ${message} ${exception}|${processid}|${stacktrace}|${threadname}" /> 
  24.     </target> 
  25.   </targets> 
  26.   <rules> 
  27.     <logger name="*" minlevel="INFO" writeTo="ElasticSearch" /> 
  28.   </rules> 
  29. </nlog> 

3、测试写入日志

  1. // GET api/values 
  2.         [HttpGet] 
  3.         public ActionResult<IEnumerable<string>> Get() 
  4.         { 
  5.             var result = new string[] { "value1""value2" }; 
  6.             _logger.LogInformation(JsonConvert.SerializeObject(result)); 
  7.             return result; 
  8.         } 

效果


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/jB8gn0iQgiHcBbn-SQ5mRQ
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐