Ведение журнала C++ Boost — как регулировать приемники? (+Ошибки компилятора)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ведение журнала C++ Boost — как регулировать приемники? (+Ошибки компилятора)

Сообщение Anonymous »


У меня две раковины. По сути, приемник sinks::asynchronous_sink и приемник sinks::asynchronouse_sink.

Уже существующий код sinks::basic_sinks_backend унаследован в пользовательский класс, который переопределяет consume() для подключения к отображению журнала на веб-сайте. Всякий раз, когда в журнал попадает огромное количество ошибок, веб-сайт зависает. Я предпочитаю выбрасывать повторяющиеся записи об ошибках в журнале, чтобы иметь возможность отладки, чем все это зависать.

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

Как это можно сделать? Могу ли я создать новый класс для text_file_backend, чтобы наследовать приемники и реализовать счетчик вывода журнала в consume() и начать там регулирование, предотвращая постановку записи в очередь?

Предполагая, что logCounter сбрасывается в 0 через регулярные промежутки времени, а throttleRateLimit представляет собой некоторое количество записей журнала за указанный промежуток времени...

unsigned int logCounter = 0; void Consumer (record_view const& Rec) { журналСчетчик++; если (logCounter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»