elasticsearch Serilog未记录到Elasticsearch,elasticsearch,asp.net-core,serilog,elasticsearch,Asp.net Core,Serilog" /> elasticsearch Serilog未记录到Elasticsearch,elasticsearch,asp.net-core,serilog,elasticsearch,Asp.net Core,Serilog" />

elasticsearch Serilog未记录到Elasticsearch

elasticsearch Serilog未记录到Elasticsearch,elasticsearch,asp.net-core,serilog,elasticsearch,Asp.net Core,Serilog,以下是Serilog Elasticsearch教程: 什么都没用。我见过其他相关的SO帖子,有建议+被接受的答案,但没有任何效果。没有错误,控制台和文件接收器都工作,但是ES永远不会写入。以下是我正在使用的代码: 使用系统; 使用Microsoft.AspNetCore; 使用Microsoft.AspNetCore.Hosting; 使用Serilog; 使用Serilog.Events; 使用Serilog.Formatting.Json; 使用Serilog.Sinks.Elastic

以下是Serilog Elasticsearch教程:

什么都没用。我见过其他相关的SO帖子,有建议+被接受的答案,但没有任何效果。没有错误,控制台和文件接收器都工作,但是ES永远不会写入。以下是我正在使用的代码:

使用系统;
使用Microsoft.AspNetCore;
使用Microsoft.AspNetCore.Hosting;
使用Serilog;
使用Serilog.Events;
使用Serilog.Formatting.Json;
使用Serilog.Sinks.Elasticsearch;
使用Serilog.Sinks.File;
命名空间aspnet.serilog.sample
{
公共课程
{
公共静态只读ILogger记录器;
静态程序()
{
logger=new LoggerConfiguration()/=Log.logger=new LoggerConfiguration()
.Enrich.FromLogContext()的
.MinimumLevel.Information()
.WriteTo.ColoredConsole(
LogEventLevel.信息,
“{NewLine}{Timestamp:HH:mm:ss}[{Level}]({CorrelationToken}{Message}{NewLine}{Exception}”)
.WriteTo.Elasticsearch(新的ElasticsearchSinkOptions)(新的Uri(“http://localhost:9200/")){
AutoRegisterTemplate=true,
AutoRegisterTemplateVersion=AutoRegisterTemplateVersion.ESv7,
IndexFormat=“测试索引-{0:yyyy.MM.DD}”,
FailureCallback=e=>Console.WriteLine(“无法提交事件”+e.MessageTemplate),
EmitEventFailure=EmitEventFailureHandling.WriteToSelfLog|
EmitEventFailureHandling.WriteToFailureSink|
EmitEventFailureHandling.RaiseCallback
,MinimumLogEventLevel=LogEventLevel.Information
})
.WriteTo.File($”/failures.log),rollingInterval:rollingInterval.Day)
.CreateLogger();
}
公共静态void Main(字符串[]args)
{
尝试
{
记录器信息($“启动测试应用程序…”);
CreateWebHostBuilder(args.Build().Run();
}
最后
{
logger.Information($“正在停止测试应用程序…”);
//Log.CloseAndFlush();
}
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog(记录器);
}
}

我还在Startup.cs文件中添加了配置,以添加日志记录,但没有效果。

对于那些有同样困难的人,我的解决方案是:

  • 已从Startup.cs文件/类中删除所有日志记录
  • 重新配置Program.cs,如下所示:
  • 使用系统;
    使用Microsoft.AspNetCore;
    使用Microsoft.AspNetCore.Hosting;
    使用Serilog;
    使用Serilog.Events;
    使用Serilog.Formatting.Json;
    使用Serilog.Sinks.Elasticsearch;
    使用Serilog.Sinks.File;
    命名空间aspnet.serilog.sample
    {
    公共课程
    {
    公共静态只读ILogger记录器;
    静态程序()
    {
    logger=新的LoggerConfiguration()
    .MinimumLevel.Information()
    .Enrich.FromLogContext()的
    .WriteTo.ColoredConsole(LogEventLevel.Information,
    “{NewLine}{Timestamp:HH:mm:ss}[{Level}]({CorrelationToken}{Message}{NewLine}{Exception}”)
    .WriteTo.Elasticsearch(新的Elasticsearch选项)(
    新Uri(“http://localhost:9200/"))
    {
    AutoRegisterTemplate=true,
    //AutoRegisterTemplateVersion=AutoRegisterTemplateVersion.ESv7,
    IndexFormat=“测试索引-{0:yyyy.MM.dd}”,
    //FailureCallback=e=>Console.WriteLine(“无法提交事件”+e.MessageTemplate),
    //EmitEventFailure=EmitEventFailureHandling.WriteToSelfLog|
    //EmitEventFailureHandling.WriteToFailureSink|
    //EmitEventFailureHandling.RaiseCallback,
    //MinimumLogEventLevel=LogEventLevel.Information,
    //RegisterTemplateFailure=RegisterTemplateRecovery.IndexAnyway,
    DeadLetterIndexName=“测试死信-{0:yyyy.MM.dd}”
    })
    .WriteTo.File($”/failures.log),rollingInterval:rollingInterval.Day)
    .CreateLogger();
    }
    公共静态void Main(字符串[]args)
    {
    尝试
    {
    记录器信息($“启动测试应用程序…”);
    CreateWebHostBuilder(args.Build().Run();
    }
    最后
    {
    logger.Information($“正在停止测试应用程序…”);
    //Log.CloseAndFlush();
    //((IDisposable)记录器)?.Dispose();
    }
    }
    公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup()
    .useserlog(记录器);
    }
    }
    

    我留下了评论,看看有什么不起作用。

    对于那些同样挣扎的人,这里是我的解决方案:

  • 已从Startup.cs文件/类中删除所有日志记录
  • 重新配置Program.cs,如下所示:
  • 使用系统;
    使用Microsoft.AspNetCore;
    使用Microsoft.AspNetCore.Hosting;
    使用Serilog;
    使用Serilog.Events;
    使用Serilog.Formatting.Json;
    使用Serilog.Sinks.Elasticsearch;
    使用Serilog.Sinks.File;
    命名空间aspnet.serilog.sample
    {
    公共课程
    {
    公共静态只读ILogger记录器;
    静态程序()
    {
    logger=新的LoggerConfiguration()
    .MinimumLevel.Information()
    .FromLogCon