elasticsearch Serilog未记录到Elasticsearch
以下是Serilog Elasticsearch教程: 什么都没用。我见过其他相关的SO帖子,有建议+被接受的答案,但没有任何效果。没有错误,控制台和文件接收器都工作,但是ES永远不会写入。以下是我正在使用的代码: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
使用系统;
使用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文件中添加了配置,以添加日志记录,但没有效果。对于那些有同样困难的人,我的解决方案是:
使用系统;
使用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(记录器);
}
}
我留下了评论,看看有什么不起作用。对于那些同样挣扎的人,这里是我的解决方案:
使用系统;
使用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