Log seguro de thread assíncrono em C ++

Estou procurando uma maneira de fazer log assíncrono e seguro para threads no meu projeto C ++, se possível em um arquivo. Atualmente estou usandocerr eclog para a tarefa, mas como são síncronas, a execução é interrompida em breve sempre que algo é registrado. É um aplicativo relativamente pesado em gráficos, então esse tipo de coisa é bastante irritante.

O novo criador de logs deve usar E / S assíncrona para se livrar dessas pausas. A segurança de threads também seria desejável, pois pretendo adicionar alguns multithreading básicos em breve.

Eu considerei uma abordagem de um arquivo por thread, mas isso parecia tornar o gerenciamento dos logs um pesadelo. Alguma sugestão?

questionAnswers(5)

yourAnswerToTheQuestion