Исключение журнала Serilog и другие свойства - PullRequest
0 голосов
/ 07 мая 2020

Я реализую Serilog в приложении службы WCF. В моем Global.asax я пытаюсь настроить глобальный регистратор для печати времени журнала, идентификатора потока, любых исключений, которые могут регистрироваться, и дополнительных свойств в формате json, включенных в события.

Моя настройка журнала:

Log.Logger = new LoggerConfiguration()
    .Enrich.WithThreadId()
    .Enrich.WithThreadName()
    .Enrich.WithExceptionDetails()
    .Enrich.FromLogContext()
        .WriteTo.File(
            path: "\\LogFiles\\Gateway\\gateway-properties-.log", 
             rollingInterval: RollingInterval.Day, 
            outputTemplate: "{Timestamp:HH:mm} [{Level}] ({ThreadId}) {Message}{NewLine}{Exception} {Properties:j}")
    .CreateLogger();
Log.Information("Initilizing Application");

Когда я смотрю на журнал, созданный для информационного события во фрагменте, он выглядит так:

16:28 [Information] (1) Initilizing Application
{}

Когда я пытаюсь записать исключение:

throw new Exception("This is a forced exception");
...
catch (Exception ex)
{
    Log.Fatal("Application could not be started", ex);
}

Я вижу это в журнале:

16:28 [Fatal] (1) Application could not be started
{}

Я ожидал увидеть сообщение об исключении и трассировку стека, включенные в элемент журнала.

В другом месте я пытаюсь зарегистрировать успех процесса запроса:

Log.Information("Transaction {0} successfully processed", request.TransactionId, request); 

И я вижу:

16:40 [Information] (8) Transaction "the correct transaction ID" successfully processed
{}

Очевидно, я неправильно настраиваю или не регистрирую вещи

Specifi c вопросов

  • Вопрос 1: Конфликтует ли что-нибудь в моей конфигурации с желаемым результатом?
  • Вопрос 2: Включает ли Serilog автоматически скобки для свойств, даже если они не включается в журнал событий? (пустой {} после журнала)
  • Вопрос 3: Когда я предоставляю свойства, почему они включаются в интерполированное поле, но не в раздел свойств журнала?
  • Вопрос 4: Нужна ли мне дополнительная настройка для включения деталей исключения?
...