Boost.Log: настройка частоты промывки или размера буфера?

#c #boost #boost-log

#c #повысить #boost-log

Вопрос:

Я искал этот сайт и Boost.В документе журнала указан способ сделать это, но пока ничего не найдено.

Документ (https://www.boost.org/doc/libs/1_74_0/libs/log/doc/html/log/detailed/sink_backends.html ) упоминается возможность установки text_stream_backend для промывки после каждой записи журнала, записанной вызовом auto_flush(true) .

Хотя это хорошо работает для отладки, мне было интересно, можно ли настроить пользовательское количество записей журнала, полученных core (или sink ?) перед flush() возникновением. Моя цель — найти баланс между полезным ведением журнала в реальном времени (я могу достаточно часто просматривать записи журнала с помощью tail -f ) и производительностью.

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

Комментарии:

1. То, что вы спрашиваете, не поддерживается Boost.Log.

2. @AndreySemashev Я вижу. Задокументировано ли где-нибудь поведение по умолчанию? Я хотел бы знать, что определяет, когда происходит промывка (с отключением auto_flush, конечно).

3. Поведение по умолчанию не зависит от поведения базовой библиотеки времени выполнения C / C . Увеличить. Журнал не реализует собственную буферизацию (кроме асинхронных приемников) и передает форматированное содержимое в файловый поток.

4. @AndreySemashev ах! Итак, если я правильно понимаю, что мне нужно сделать, это создать свой собственный ofstream , настроить его поведение и размер буфера и передать его на серверную часть с add_stream() ?

5. Хммм, теперь я понимаю, что если я использую text_ostream_backend вместо text_file_backend , я теряю scan_for_files() и set_file_collector . Что-то вроде необработанной сделки. Ну что ж.