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

系统 分布式
在系统中,如果将日志作为文件输出,查看系统日志将非常不便;如果将日志保存到数据库中,又不能进行全文搜索。在这里我们将日志输出到ElasticSearch中,借助Kibana再查找日志。

[[385847]] 

本文转载自微信公众号「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.         } 

效果

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2024-11-28 08:57:21

分布式链路Skywalking

2024-12-04 08:17:49

日志框架NLog

2020-07-16 20:55:19

ElasticSear集群分布式

2017-12-05 09:43:42

分布式系统核心

2011-05-11 16:42:21

.NET Remoti

2024-10-24 08:51:19

分布式链路项目

2022-06-27 08:21:05

Seata分布式事务微服务

2024-03-18 00:00:01

分布式搜索引擎

2015-05-14 10:23:13

ElasticSear分布式搜索配置文件

2023-12-29 08:18:31

Session分布式系统微服务

2021-01-25 15:00:44

微服务分布式日志

2017-10-16 10:24:47

LogDevice存储系统

2012-02-28 10:30:56

C#.NET

2014-11-25 10:09:59

ElasticSear分布式搜索引擎Lucene

2011-07-26 09:57:02

分布式网络管理带外网络

2022-01-06 10:58:07

Redis数据分布式锁

2023-08-21 19:10:34

Redis分布式

2021-10-25 10:21:59

ZK分布式锁ZooKeeper

2024-06-13 09:34:35

JWTTokenSpring

2019-05-05 08:37:39

分布式PyTorchGPU
点赞
收藏

51CTO技术栈公众号