elasticsearch,asp.net-core,kibana,serilog,C#,elasticsearch,Asp.net Core,Kibana,Serilog" /> elasticsearch,asp.net-core,kibana,serilog,C#,elasticsearch,Asp.net Core,Kibana,Serilog" />

C# ElasticSearch云上的Serilog接收器,Kibana未接收消息

C# ElasticSearch云上的Serilog接收器,Kibana未接收消息,c#,elasticsearch,asp.net-core,kibana,serilog,C#,elasticsearch,Asp.net Core,Kibana,Serilog,我正在使用最新的Serilog和ElasticSink,我有以下配置: public Startup(IConfiguration configuration) { Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri)) {

我正在使用最新的Serilog和ElasticSink,我有以下配置:

public Startup(IConfiguration configuration)
{
    Log.Logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri))
        {
            IndexFormat = "ConsoleAPP-{0:yyyy.MM.dd}",
            AutoRegisterTemplate = true,
            CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true),
            ModifyConnectionSettings = x => x.BasicAuthentication("myusername", "mypassword"),
            EmitEventFailure =
                EmitEventFailureHandling.WriteToSelfLog |
                EmitEventFailureHandling.RaiseCallback |
                EmitEventFailureHandling.ThrowException,
            FailureCallback = e => {
                Console.WriteLine("Unable to submit event " + e.MessageTemplate);
            }
        })
        .WriteTo.File("Logs/log.txt", rollingInterval: RollingInterval.Day, rollOnFileSizeLimit: true)
        .CreateLogger();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddSerilog();
}
但是当我去基巴纳的时候,我有两个问题。 1.我没有看到索引
ConsoleApp…
。只有名为
logstash-2020.02.10的索引
2.在这个索引中,我看到一些一小时前写的消息。即使有活动,我也看不到任何新的日志消息

更新#1: 下面是我如何在控制器中使用它

public class TestController : ControllerBase
{

    private readonly ILogger logger;

    public TestController(ILoggerFactory loggerFactory)
    {
        logger = loggerFactory.CreateLogger<TestController>();
    }


    [HttpGet]
    public string Test()
    {
        logger.LogInformation("Called Test/Test controller method");

        return "ok";
    }
}
公共类TestController:ControllerBase
{
专用只读ILogger记录器;
公共测试控制器(iLogger工厂Logger工厂)
{
logger=loggerFactory.CreateLogger();
}
[HttpGet]
公共字符串测试()
{
logger.登录信息(“称为测试/测试控制器方法”);
返回“ok”;
}
}

我不知道您为什么使用logger factory。您有创建的任何自定义记录器类吗?在控制器上,更改为ILogger相当于CreateLogger

public class TestController : ControllerBase
{

    private readonly ILogger<TestController > logger;

    public TestController(ILogger<TestController > _logger)
    {
        logger = _logger;
    }


    [HttpGet]
    public string Test()
    {
        logger.LogInformation("Called Test/Test controller method");

        return "ok";
    }
}
公共类TestController:ControllerBase
{
专用只读ILogger记录器;
公共测试控制器(ILogger\u记录器)
{
记录器=_记录器;
}
[HttpGet]
公共字符串测试()
{
logger.登录信息(“称为测试/测试控制器方法”);
返回“ok”;
}
}

我还注意到您在startup和controller中调用CreateLogger两次。是什么导致了问题?

需要更多关于如何声明记录器的信息。也许这个stackoverflow问题可以解决您的问题。“@phonemyatt我已经更新了我的问题,并添加了我如何呼叫Logger的片段。您是否尝试过此示例?”。据我所知,你的代码没有问题。也许回滚到正常的控制台日志并尝试查看它是否工作,检查是我将尝试的第一步