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();