asp.net core项目 Nlog直接写入集群ElasticSearch的配置方法

1、NuGet 项目引用

NLog.Web.AspNetCore

NLog.Targets.ElasticSearch

2、nlog.config配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true">

  <!-- enable asp.net core layout renderers -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
    <add assembly="NLog.Targets.ElasticSearch"/>
  </extensions>

  <!-- the targets to write to -->
  <targets async="true">
    <target xsi:type="BufferingWrapper" name="ElasticSearch" flushTimeout="5000">
      <target xsi:type="ElasticSearch"
              uri="http://ip地址1:端口,http://ip地址2:端口,http://ip地址3:端口"
              index="mycore-web-${shortdate}"
              includeAllProperties="true">
        <field name="machinename" layout="${machinename}" />
        <field name="date" layout="${longdate}" />
        <field name="logger" layout="${logger}" />
        <field name="stacktrace" layout="${stacktrace}" />
        <field name="threadid" layout="${threadid}" />
        <field name="url" layout="${aspnet-request-url:IncludeQueryString=true}" />
        <field name="controller" layout="${aspnet-mvc-controller}" />
        <field name="action" layout="${aspnet-mvc-action}" />
      </target>
    </target>
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <!-- BlackHole without writeTo -->
    <logger name="Microsoft.*" maxLevel="Info" final="true" />
    <logger name="*" minlevel="Info" writeTo="ElasticSearch" />
  </rules>
</nlog>