Новый скользящий файл не всегда записывается с помощью Xamarin. iOS - PullRequest
1 голос
/ 25 февраля 2020

Я использую Serilog v2.8.0 для приложения Xamarin с таргетингом на iOS.

. Я настраиваю регистратор следующим образом:

    Log.Logger = new LoggerConfiguration().MinimumLevel.Verbose()
                                              .Enrich.WithThreadId()
                                              .Enrich.FromLogContext()
                                              .Enrich.WithExceptionDetails()
                                              .WriteTo.File(logFile, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}[{Level:u3}][{ThreadId}]{SourceContext}-{Message:l}{NewLine:l}{Exception:l}", rollingInterval: RollingInterval.Day)
                                              .WriteTo.NSLog(outputTemplate: "[{Level:u3}][{ThreadId}]{SourceContext}-{Message:l}{NewLine:l}{Exception:l}")
                                              .CreateLogger();

Кажется, что иногда, но не всегда, новый файл в ежедневном списке не записывает в файловую систему. Приложение будет работать и регистрироваться, но ничего не выписывается. Даже смахивание убивает приложение, в котором я выполняю Log.CloseAndFlu sh () не записывает файл. После перезапуска приложения файл записывается, но предыдущие журналы за этот день явно утеряны.

Возможно, это вызвано тем, что приложение находится в фоновом режиме с заблокированной файловой системой, когда устройство пересекает полночь .

Я пробовал Log.CloseAndFlu sh (), но это избавляет от моего логгера. В этом случае мне нужно перенастроить регистратор и обновить все мои ссылки на регистратор в моем приложении. Я предпочел бы устранить причину root, и SeriLog соответствующим образом открыл бы файл, когда файловая система станет доступной.

Любая помощь или мысли будут оценены.

...