Serilog Роллинг журналы только в одном файле - PullRequest
0 голосов
/ 13 января 2019

Есть ли способ настроить Serilog, чтобы вести журнал в одном и том же файле, сохраняя максимальный размер файла?

Другими словами, если я указываю максимальный размер файла, равный 100 МБ, процесс должен удалить более ранние записи из файла перед добавлением новых.

1 Ответ

0 голосов
/ 14 января 2019

TL; DR нет; File (или его предшественник RollingFile) не предоставляет такой возможности и вряд ли сможет это сделать в любой момент для журналов на диске.

Итак, лучшее доступное решение - установить максимальное количество записей в журнале.

Основная проблема с достижением того, что вы описываете, заключается в том, что, как работает большинство файловых систем, потребуется переписать весь файл, чтобы удалить обрезанный материал - это будет означать, что писатель будет блокировать вещи (и вызывать ненужную работу), когда это происходит. Еще одна проблема, которую необходимо будет преодолеть, - это управление условием гонки, неявным образом у нескольких авторов, которые пытаются воздействовать на обрезку одновременно (и / или с немного другими параметрами).

(Если вы заглянете в список проблем Serilog Github, вы увидите, что люди время от времени задают один и тот же вопрос по-разному, запрашивая журнал с самой последней информацией вверху файла)

ОБНОВЛЕНИЕ: Кто-то взломал ее в - этот вопрос охватывает эту территорию и хорошие детали - Мой комментарий там более полный и организованный, чем этот ответ;)

...