NLog.Targets.ElasticSearch

The Elasticsearch target works best with the BufferingWrapper target applied.

By default the target assumes an Elasticsearch node is running on the localhost on port 9200.

See wiki for parameters.

<nlog>
  <extensions>
    <add assembly="NLog.Targets.ElasticSearch"/>
  </extensions>
  <targets>
    <target name="elastic" xsi:type="BufferingWrapper" flushTimeout="5000">
      <target xsi:type="ElasticSearch"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="elastic" />
  </rules>
</nlog>

Versions

Versioning follows elasticsearch versions. E.g.

VersionElasticsearch VersionNLog Version
7.x 7.x 4.6.x
6.x 6.x 4.5.x

 

Unhandled Exception: System.TypeInitializationException: The type initializer for 'NLogTest.Program' threw an exception. ---> NLog.NLogConfigurationException: Exception when parsing C:\Users\clu\source\repos\NLogTest\NLogTest\bin\Debug\NLog.config. ---> NLog.NLogConfigurationException: Target 'elastic' not found for logging rule: *.
at NLog.Config.LoggingConfigurationParser.ParseLoggingRuleTargets(String writeTargets, LoggingRule rule)
at NLog.Config.LoggingConfigurationParser.ParseRuleElement(ILoggingConfigurationElement loggerElement)
at NLog.Config.LoggingConfigurationParser.ParseRulesElement(ILoggingConfigurationElement rulesElement, IList`1 rulesCollection)
at NLog.Config.LoggingConfigurationParser.LoadConfig(ILoggingConfigurationElement nlogConfig, String basePath)
at NLog.Config.XmlLoggingConfiguration.ParseNLogElement(ILoggingConfigurationElement nlogElement, String filePath, Boolean autoReloadDefault)
at NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String filePath, Boolean autoReloadDefault)
at NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors)
--- End of inner exception stack trace ---
at NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors)
at NLog.Config.XmlLoggingConfiguration..ctor(XmlReader reader, String fileName, LogFactory logFactory)
at NLog.Config.LoggingConfigurationFileLoader.LoadXmlLoggingConfiguration(XmlReader xmlReader, String configFile, LogFactory logFactory)
at NLog.Config.LoggingConfigurationFileLoader.LoadXmlLoggingConfigurationFile(LogFactory logFactory, String configFile)
at NLog.Config.LoggingConfigurationFileLoader.TryLoadLoggingConfiguration(LogFactory logFactory, String configFile, LoggingConfiguration& config)
at NLog.Config.LoggingConfigurationFileLoader.TryLoadFromFilePaths(LogFactory logFactory, String filename)
at NLog.Config.LoggingConfigurationFileLoader.Load(LogFactory logFactory, String filename)
at NLog.Config.LoggingConfigurationWatchableFileLoader.Load(LogFactory logFactory, String filename)
at NLog.LogFactory.get_Configuration()
at NLog.LogFactory.GetLoggerThreadSafe(String name, Type loggerType)
at NLog.LogManager.GetCurrentClassLogger()
at NLogTest.Program..cctor() in C:\Users\clu\source\repos\NLogTest\NLogTest\Program.cs:line 10
--- End of inner exception stack trace ---
at NLogTest.Program.Main(String[] args)

 

手动配置

  var targetName = "elastic";
                var target = LogManager.Configuration.FindTargetByName(targetName);
                if (target is BufferingTargetWrapper bufferingTargetWrapper)
                {
                    if (bufferingTargetWrapper.WrappedTarget is ElasticSearchTarget elasticSearchTarget)
                    {
                        Console.WriteLine(elasticSearchTarget.Uri);
                        Console.WriteLine(elasticSearchTarget.Index);
                        //elasticSearchTarget.Uri = "http://172.31.211.17:9200/";
                        //elasticSearchTarget.Index = "logstash-20200708-001";
                    }
                }

 

posted @ 2020-07-08 14:30  ChuckLu  阅读(694)  评论(0编辑  收藏  举报