Я ищу способ сделать асинхронное и потокобезопасное ведение журнала в моем проекте на С++, если возможно, одному файлу. В настоящее время я использую cerr
и clog
для задачи, но поскольку они являются синхронными, выполнение в кратчайшие сроки приостанавливается каждый раз, когда что-то записывается в журнал. Это относительно графическое приложение, поэтому такого рода вещи довольно раздражают.
Новый регистратор должен использовать асинхронный ввод-вывод, чтобы избавиться от этих пауз. Кроме того, было бы желательно обеспечить безопасность потоков, поскольку я намерен в ближайшее время добавить некоторые базовые многопоточности.
Я рассмотрел подход с одним файлом на поток, но похоже, что это приведет к тому, что управление журналами станет кошмаром. Любые предложения?