Интеграция с верхней панелью Serilog не работает

Я пытаюсь настроить простую конфигурацию ведения журнала для моей службы Windows, используя Topshelf и Serilog (пакет Serilog.Extras.Topshelf соответственно).

HostLogger.UseLogger(new SerilogHostLoggerConfigurator(new LoggerConfiguration()
                .WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
                .WriteTo.ColoredConsole()
                .MinimumLevel.Debug()
                .CreateLogger()));
HostFactory.Run(x => {
            x.UseSerilog();
            ...

Служба работает нормально, однако выход не производится, ни на консоль, ни на указанный файл журнала (я вижу, что он создается, но он остается пустым). Кто-нибудь имеет опыт использования обеих фреймворков?

Ответ 1

Второй вызов "x.UseSerilog()" сбрасывает TopShelf HostLogger для использования глобального экземпляра Serilog (Log.Logger), который вы не настроили.

Удалите второй вызов, и журнал должен начать работать.

Другой вариант - настроить глобальный регистратор:

Log.Logger = new LoggerConfiguration()
            .WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\app-{Date}.log")
            .WriteTo.ColoredConsole()
            .MinimumLevel.Debug()
            .CreateLogger();

HostFactory.Run(x => {
        // configure TopShelf to use Serilog global instance.
        x.UseSerilog();
}