当前位置: 首页 > 知识库问答 >
问题:

Serilog不使用Elasticsearch

松建本
2023-03-14

我已经在我的Windows7机器上本地安装了Elasticsearch。它工作正常,我可以用邮递员查询它。使用Postman,我还创建了一个名为cmstest的索引。这有一个名为ZDSF的表。如果获取该索引的映射(http://localhost:9200/cmstest/_mapping),我将得到以下内容:

我可以邮寄条目到这个表以及使用邮递员。

现在,我正试图从我的.NET 4.5应用程序中使用Serilog来记录ElasticSearch的localhost实例。下面是我的代码

var elasticUri = new Uri("http://localhost:9200/cmstest/zdsf");

var loggerConfig = new LoggerConfiguration()
                .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(elasticUri)
                {
                    AutoRegisterTemplate = true
                });

zdsf z = new zdsf();

z.filedate = DateTime.Now;
z.filename = "File2";

var logger = loggerConfig.CreateLogger();

var jsonString = new JavaScriptSerializer().Serialize(z);

logger.Error(jsonString);

我尝试使用以下URL:

http://localhost:9200/

http://localhost:9200/cmstest

http://localhost:9200/cmstest/zdsf

我尝试将AutoRegisterTemplate设置为true和false。但是Serilog似乎没有向ElasticSearch写任何东西。它甚至没有给出一个例外。它只是在没有记录任何东西的情况下完成。

另一个有趣的事情是,当serilog应该进行日志记录时,fiddler不显示任何到http://localhost:9200的流量。但当我通过邮递员提出请求时,它显示流量。

我做错了什么?我怎样才能让Serilog工作?

更新1:更新的ElasticSearch.NET nuget包

我发现接收器使用的是旧版本的ElasticSearch.NET。因此,我删除了ElasticSearch.NET nuget包,并下载了最新的。这还在我的app.config中添加了所需的BindingRedirects。但是登录到ElasticSearch仍然不起作用。

共有1个答案

顾俊誉
2023-03-14

在我的情况下,有很多事情出错了:

  1. 当我尝试一个控制台应用程序时,该应用程序在编写日志之前就被终止了。可以通过在应用程序终止之前使用console.readline()或log.closeandflush()语句来解决这个问题。
  2. 接下来,Serilog.sinks.ElasticSearch包依赖于ElasticSearch.NET nuget包的旧版本。要实现Elastic5.x,您需要更高版本的ElasticSearch.NET包。因此,我手动删除了该包并获得了最新版本。
  3. 现在,尽管我有最新的ElasticSearch.NET包,但某些代码仍在寻找旧的包。添加程序集重定向可修复此问题。
  4. 接下来,我了解到serilog.sinks.elasticSearch有一个最低日志记录级别。我把它设置为冗长。但那没用。问题是我把它放在水槽里,而不是在Serilog级别。在这之后,我就可以让我的本地应用程序工作了。
  5. 我认为这在Azure函数(在本例中我想要的应用程序)中仍然不起作用,因为Azure函数似乎没有程序集重定向。为此,我下载了Serilog.sinks.ElasticSearch源代码,删除了对ElasticSearch.NET旧版本的引用,并将其指向最新版本。我计划使用这个代码而不是nuget包。
 类似资料:
  • Serilog 是一个结构化的 C# 日志库。支持从配置初始化,             Log.Logger = new LoggerConfiguration()                .ReadFrom.AppSettings()                .CreateLogger(); 配置文件如下:     <add key="serilog:minimum-level" 

  • 我正在尝试将日志发送到ElasticSearch,并在Kibana中查看它们。出于某种奇怪的原因,它不起作用:这些项目正在做一些事情,但在基巴纳什么都没有。我下载并尝试了10多个与此主题相关的项目,虽然它们被介绍为工作示例,但没有一个成功:Kibana中没有任何内容! 我在这里发布了其中一个的源代码: 这是控制器: PS我还发现了log4net的示例-也不工作

  • 我正在尝试使用Serilog设置Azure WebJobs。这是我目前的例外: 微软。azure . web jobs . host . indexers . functionindexingexception:错误索引方法“函数。“ProcessQueueMessage” 我看过这个回答,但是Serilog。不再维护WebJobs。 我尝试过这种宿主样板设置的变体,但它要么导致相同的异常,要么不

  • 我想在Azure函数v4(.net 6)中使用Serilog(日志应发送到Datadog)。为此,我安装了以下nuget软件包: 以下是启动中的配置。cs类: 基本上日志记录工作正常,但所有日志语句都写入两次(与Datadog和控制台相差几毫秒)。 显然,我在配置上做了一些根本的错误。我不使用appsettings.json,Serilog的配置只在代码中进行。我搜索了整个互联网,几乎阅读了关于S

  • 本文向大家介绍Asp.Net MVC中配置Serilog的方法,包括了Asp.Net MVC中配置Serilog的方法的使用技巧和注意事项,需要的朋友参考一下 一、Serilog介绍 Serilog 是一种非常简便记录log 的处理方式,使用Serilog可以生成本地的text文件, 也可以通过 Seq 来在Web界面中查看具体的log内容。 二、配置方法 接下来就简单的介绍一下在Asp.Net

  • 问题内容: 我已经设置了代码示例,但是无法使用serilog登录到带有验证的kibana。在这里,我已附上我的代码,请对其进行更正。 问题答案: 步骤1:安装此NuGet软件包“ Serilog.Sinks.Elasticsearch” 步骤2:在App.config或Web.config中添加它 步骤3:在main()的program.cs或Application_Start()的Global.