Microsoft.Extensions.Logging - LogError не является исключением журнала - PullRequest
1 голос
/ 19 сентября 2019

Я использую простой ASP.NET предоставленный регистратор, который я получаю путем внедрения зависимости: Microsoft.Extensions.Logging.ILogger<T>.На практике динамический тип - Microsoft.Extensions.Logging.Logger<T>.

. При отлове исключений я пытаюсь зарегистрировать их, используя: _logger.LogError(exception, "message"), однако печатается только сообщение.

namespace App
{
    public class App : IApp
    {
        private readonly ILogger<App> _logger;

        public PomParser(ILogger<App> logger)
            => _logger = logger;

        public void DoStuff()
        {
            try
            {
                DoStuffUnsafe();
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"Failed to do stuff");
            }
        }
    }
}

Как янастроить ведение журнала:

var host = new HostBuilder().ConfigureLogging(ConfigureLogging)...
...
await host.RunAsync();
        private static void ConfigureLogging(HostBuilderContext hostContext, ILoggingBuilder configLogging)
        {
            configLogging.ClearProviders();
            configLogging.AddConfiguration(hostContext.Configuration.GetSection("Logging"));
            configLogging.AddFile(
                options =>
                {
                    hostContext.Configuration.GetSection("FileLoggingOptions")
                        .Bind(options);
                }
            );
            configLogging.AddConsoleLogger();
        }

appsettings:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "FileLoggingOptions": {
    "FileName": "app-",
    "LogDirectory": "logs",
    "FileSizeLimit": 10485760,
    "Extension": "log"
  }
}

1 Ответ

0 голосов
/ 19 сентября 2019

См. По умолчанию MessageFormatter: https://github.com/aspnet/Logging/blob/master/src/Microsoft.Extensions.Logging.Abstractions/LoggerExtensions.cs

        private static string MessageFormatter(FormattedLogValues state, Exception error)
        {
            return state.ToString();
        }

Он просто игнорирует исключение ...

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