Boost.Log асинхронное ведение журнала с системным журналом - PullRequest
0 голосов
/ 25 марта 2020

Я реализую оболочку в Boost.log для ведения журналов syn c и asyn c способами. Как показано ниже, я определил фронт асинхронной мойки с syslog_backend.

typedef sinks::asynchronous_sink<
    sinks::syslog_backend,
    sinks::unbounded_ordering_queue<
    logging::attribute_value_ordering< unsigned int, std::less< unsigned int > >
>
> Async_syslog_sink;

Но внутри init (), когда я использую это определение для создания серверной части и добавления в logging :: core, произошла ошибка.

// Create a backend
boost::shared_ptr< Async_syslog_sink > sink(new Async_syslog_sink(
    keywords::facility = sinks::syslog::user,
    keywords::use_impl = sinks::syslog::native
));
sink->set_formatter(&my_formatter);
logging::core::get()->add_sink(sink);

Ошибка:

/ usr / include / boost / log / sinks / async_frontend.hpp: в экземпляре 'boost :: log :: v2_mt_posix :: sinks :: asynchronous_sink :: asynchronous_sink (bool) [с SinkBackendT = повышение :: войти :: v2_mt_posix :: тонет :: syslog_backend; QueueingStrategyT = boost :: log :: v2_mt_posix :: sinks :: unbounded_ordering_queue>>] ': /root/sample-logger/src/Loggers/Async/AsyncLogger.h:314:9:
требуется отсюда / usr / include / boost / log / sinks / async_frontend.hpp: 230: 31: ошибка: нет соответствующей функции для вызова 'boost :: log :: v2_mt_posix :: sinks :: unbounded_ordering_queue>> :: unbounded_ordering_queue ()' m_FlushRequested (false)

Как я могу иметь асинхронный регистратор с бэкэндом syslog?

спасибо.

1 Ответ

1 голос
/ 26 марта 2020

Необходимо указать предикат порядка в именованном параметре keywords::order конструктора приемника. Учитывая, что вы используете logging::attribute_value_ordering, вы должны указать имя атрибута, на основе которого вы хотите упорядочить записи журнала при построении предиката. Например:

keywords::order = logging::attribute_value_ordering< unsigned int, std::less< unsigned int > >("RecordID")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...