Serilog не пишет в текстовый файл из консольного приложения

у меня есть Logging.Coreбиблиотека классов со следующим простым классом. Моя цель - разделить один настроенный регистратор между всеми другими проектами в решении:

      public static class Logging
{
    public static void Configure()
    {
        ILogger logger = new LoggerConfiguration()
            .WriteTo.File(path: "log.txt")
            .CreateLogger();
        Log.Logger = logger;
    }
}

Затем в моем консольном приложении Program class, я пытаюсь писать записи в журнале:

      static void Main(string[] args)
{
    Logging.Core.Logging.Configure();

    Log.Debug("Application startup has begun");
    var dbPath = "dalbuilder.db";
    if (!File.Exists(dbPath))
    {
        DalBuilderDb.CreateDbTables();
        Log.Information("Created new Sqlite database file: {filePath}", dbPath);
    }
    DalSourceModel.LoadModelTables();

    Log.CloseAndFlush();
}

Когда я проверяю свою выходную папку, я вижу log.txtбыл создан, но пуст, хотя в нем должна быть хотя бы одна запись «Запуск приложения начался». Консольное приложение работает точно так, как ожидалось, и процесс завершается с кодом 0. Оба проекта - это .NET 5.0, а в библиотеке журналов есть следующие пакеты Nuget:

      Serilog (2.10.0)
Serilog.Sinks.File (4.1.0)

1 ответ

Решение

Интересно, относится ли это к проблеме минимального уровня. Пытаться :-

      ILogger logger = new LoggerConfiguration()
  .MinimumLevel.Verbose()
  .WriteTo.File(path: "log.txt")
  .CreateLogger();
Другие вопросы по тегам