Serilog с .net core web api 2.2 - PullRequest
       29

Serilog с .net core web api 2.2

0 голосов
/ 06 июня 2019

Я пытаюсь использовать 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.

Что мне не хватает?

1 Ответ

0 голосов
/ 08 июня 2019

Вы уверены, что http://localhost:9200/ правильно?Разные контейнеры Docker работают в общем сетевом интерфейсе?Если это не так, вы, вероятно, должны попытаться изменить это на http://<service name>:9200/, где service name - это имя, которое вы даете контейнеру Serilog в файле компоновки Docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...