Estou escrevendo uma biblioteca que possui muitas informações que podem ser úteis em um log do programa que a utiliza, mas não sei a melhor maneira de expô-la de tal maneira que o programa que usa minha biblioteca possa integrar os logs da minha biblioteca com seus próprios logs de maneira aparentemente inexistente (se desejado).
Escolher uma biblioteca de log específica para minha biblioteca adiciona à lista de dependências para usar minha biblioteca e vincula o programa principal a essa biblioteca - e se várias bibliotecas usadas pelo programa principal fizessem isso, cada uma poderia ter selecionado uma biblioteca diferente .
Já pensei em ter o programa registrar um objeto de fluxo C ++ na biblioteca para ele usar. Parece que seria um objetivo relativamente geral, mas também pensei em fazer com que o programa principal registrasse uma função de retorno de chamada que seria solicitada com o conteúdo e os metadados quando os dados forem registrados. Outra opção seria apenas armazenar os dados de log na biblioteca em algum tipo de lista para o programa principal pegar sempre que quiser lidar com esses dados, deixando o programa principal decidir quando tem tempo para lidar com os dados.
Estou procurando sugestões e prós / contras de diferentes abordagens para que eu possa decidir o que é melhor na minha situação.