我在Windows 7机器上本地安装了Elasticsearch。它工作正常,我可以使用邮递员查询它。使用Postman,我还创建了一个名为cmstest的索引。这有一个名为zdsf的表。如果我得到这个索引的映射(http://localhost:9200/cmstest/_mapping),我会得到以下结果:
我也可以使用Postman将条目发布到此表。
现在,我试图使用我的.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);
我尝试使用以下网址:
http://localhost:9200/cmstest/zdsf
我已经尝试将AutoRegisterTemplate设置为true和false。但Serilog似乎没有为弹性搜索写任何东西。它甚至没有例外。它只是完成而没有记录任何东西。
另一个有趣的事情是,当serilog应该进行伐木时,小提琴手不会向http://localhost:9200显示任何流量。但是当我通过Postman提出请求时,它会显示流量。
我究竟做错了什么?我怎样才能让Serilog工作?
更新1:更新了ElasticSearch.Net nuget包
我发现Sink使用的是旧版本的ElasticSearch.Net。所以,我删除了ElasticSearch.Net nuget包并下载了最新版本。这也在我的app.config中添加了所需的BindingRedirects。但是登录ElasticSearch仍然无法正常工作。
在我的案例中,有很多事情出错了: