【发布时间】:2019-06-06 19:21:56
【问题描述】:
我正在尝试将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 运行,也可以仅在VS 中使用Docker 进行调试。
我错过了什么?
【问题讨论】:
标签: docker elasticsearch asp.net-core docker-compose serilog