Serilog перестает записывать в файл

Я использую Serilog для регистрации ошибок в моем WebApi со следующей конфигурацией.

private static readonly string LogFileName = System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/Logs/Service.log");

    private static void ConfigureLogging(ContainerBuilder builder)
    {
        var loggerConfig = new LoggerConfiguration()
            .ReadFrom.AppSettings()
            .WriteTo.Console()
            .WriteTo.File(LogFileName != null ? LogFileName : "C:/Temp/Logs/Service.log",
                shared: true,
                rollingInterval: RollingInterval.Day);
        // configure global logger for logging in owin middleware
        Log.Logger = loggerConfig.CreateLogger();
        builder.Register(_ => Log.Logger).As<ILogger>();  }`

С настройками приложений

<appSettings>
    <add key="serilog:minimum-level" value="Warning" />
</appSettings>

Проблема в том, что он регистрируется только один раз. Сервис все еще жив, я могу отправить больше Успешных запросов. И я также вижу запросы/ошибки, зарегистрированные в консоли. Но это не добавляется в файл журнала.

НО, если я отредактирую WebConfig - переключитесь с «Предупреждение» на «Подробное», а затем обратно на «Предупреждение», так что никаких реальных изменений — он снова регистрируется.


person Nils Koppmeier    schedule 31.05.2021    source источник
comment
Вам нужно очищать регистратор после каждой записи. Данные перемещаются из регистратора в файл, когда буфер заполнен. Вероятно, у вас есть данные в буфере, и вы не закрыли логгер, когда приложение завершило работу, и не получили все сообщения, сохраненные в файл.   -  person jdweng    schedule 31.05.2021
comment
Вы имеете в виду flushToDiskInterval: TimeSpan.FromSeconds(1)? Потому что это не решает проблему.   -  person Nils Koppmeier    schedule 31.05.2021
comment
Возможно... gist.github.com/benfoster/1240d93cc18a0742969c8bf12254ed2c   -  person Fildor    schedule 31.05.2021
comment
Спасибо за эту подсказку, я также наткнулся на этот пост, где причина отсутствовала. ="показывается только первое ведение журнала, если принудительное удаление"> stackoverflow.com/questions/46260308/   -  person Nils Koppmeier    schedule 31.05.2021


Ответы (1)


Для отладки и диагностики используйте этот собственный журнал, который может показать вам точную ошибку или проблему, с которой сталкивается ваше приложение. Проверьте это здесь https://github.com/serilog/serilog/wiki/Debugging-and-Diagnostics

person UmairSyed    schedule 06.06.2021