Я пытаюсь использовать ElasticSearchSink
для Serilog
. У меня есть файл docker-compose
для запуска ElasticSearch
, Kibana
и .NET Core 2.2 Web API
.
Вот код в Configure
в Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
var elasticUri = Configuration["ElasticConfiguration:Uri"];
var logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri))
{
AutoRegisterTemplate = true
});
loggerFactory.AddSerilog();
Log.Logger = logger.CreateLogger();
app.UseMvc();
}
appsettings.json
является
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"AllowedHosts": "*",
"ElasticConfiguration": {
"Uri": "http://localhost:9200/"
}
}
Я могу нажать localhost:9200
, а Kibana
тоже отлично запускается. Но в Kibana
нет данных. Я не вижу никаких ошибок, но я ожидал, что некоторые данные в ES
и Kibana
.
Класс контроллера:
public class AuthenticationController : ControllerBase
{
private readonly ILogger<AuthenticationController> _logger;
public AuthenticationController(ILogger<AuthenticationController> logger)
{
_logger = logger;
}
[HttpPost]
[Route("token")]
public async Task<IActionResult> ValidateToken([FromBody] AuthenticateRequest request)
{
_logger.LogInformation($"ValidateToken: request received with {request}");
return Ok(new AuthenticateRespose
{
Token = "testing", Duration = 0
});
}
}
Я могу поразить эту конечную точку с Postman
как при запуске с docker-compose
, так и при отладке с Docker
в VS
.
Что мне не хватает?