Conheço muitas bibliotecas de log, mas não testei muitas delas. (GoogleLog, Pantheios, o próximo impulso :: biblioteca de registros ...)
Nos jogos, especialmente nos jogos multiplayer remoto e multithread, o log é vital para a depuração, mesmo se você remover todos os logs no final.
Digamos que eu esteja criando um jogo para PC (não console) que precise de logs (multiplayer e multithread e / ou multiprocess) e tenho boas razões para procurar uma biblioteca para log (como, não tenho tempo ou estou não confiante em minha capacidade de escrever um corretamente para o meu caso).
Supondo que eu precise:
- desempenho
- facilidade de uso (permite streaming ou formatação ou algo assim)
- confiável (não vaze ou bata!)
- multiplataforma (pelo menos Windows, MacOSX, Linux / Ubuntu)
Qual biblioteca de registro você recomendaria?
Atualmente, acho que o boost :: log é o mais flexível (você pode até fazer logon remotamente!), Mas não possui uma boa atualização de desempenho : é para alto desempenho, mas ainda não foi lançado. O Pantheios é frequentemente citado, mas não tenho pontos de comparação em desempenho e uso. Eu uso minha própria biblioteca há muito tempo, mas sei que ela não gerencia multithreading, por isso é um grande problema, mesmo que seja rápido o suficiente. O Google Log parece interessante, só preciso testá-lo, mas se você já comparou essas bibliotecas e muito mais, seu conselho pode ser útil.
Os jogos geralmente exigem desempenho, embora sejam complexos para depuração, por isso seria bom conhecer as bibliotecas de log que, no nosso caso específico, têm vantagens claras.
Respostas:
log usando socket (qualquer invólucro de soquete pode ser suficiente) + navegador da web websocket => a ferramenta de registro mais versátil e discreta possível, obterá horas de depuração e evitará causar danos aos olhos.
Agora, o bônus:
e muitas outras tarefas fora do log:
(quase todas as opções acima podem ser feitas usando soquetes flash, salve os recursos do banco de dados)
Agora eu sei que parece um pouco longo para configurar a coisa. Mas é realmente um ganho de tempo em um projeto longo, com uma situação difícil de depuração (como nos jogos). É a coisa mais poderosa que eu usei desde os depuradores ...
Nota 1: a única desvantagem => verifique o efeito colateral ao depurar o código de rede do jogo (impacto no tamanho do buffer do soquete, latência, largura de banda, etc ...)
Nota 2: alguns broswer desativados por padrão na Web devido a razões de segurança, verifique about: config things para ter certeza de que está ativado.
fonte
Quando se trata de desempenho, achei o templog praticamente invicto. Ele usa modelos de expressão para adiar a avaliação das instruções de log até que seja estabelecido que as informações serão registradas. Como você também pode desativar parcialmente o log (dependendo da gravidade, origem e público-alvo de uma mensagem de log), algumas dessas instruções de log podem ser eliminadas no código zero pelo compilador para compilações de versão. (Na verdade, eu vi isso acontecer com o VC.)
Não havia muito o que fazer na biblioteca recentemente, e outras pessoas no SO descobriram que o porta-mal estava ausente em alguns aspectos, mas em uma empresa em que eu trabalhava, encontramos o cara bastante receptivo e um dos meus colegas de trabalho até obteve acesso de confirmação e adicionou algum código a ele, então você pode achar que vale a pena tentar.
Para enumerar seus requisitos:
Melhor que eu encontrei. Especialmente sua capacidade de excluir mensagens de log em tempo de compilação e fazer com que o compilador os eliminasse completamente era muito atraente.
Há as horríveis mensagens de erro clássicas do compilador de modelos - meta-coisas quando você faz algo errado, mas quando se trata de facilidade de uso, isso
é difícil de bater.
No entanto, pode ser necessário criar seus próprios coletores de log (é para onde as mensagens de log vão), pois os poucos pré-empacotados (stderr, arquivo, log do Windows etc.) não são tão sofisticados. Como o desempenho é um objetivo principal, os intrínsecos da coisa toda são um pouco complicados (como formatadores de mensagens de log sendo bastante entrelaçados com sumidouros de logs), mas nós dominamos isso (lembro de percorrê-lo em um depurador ajudando nisso) e uma vez entendeu que não era tão difícil escrever seus próprios formatadores de mensagens ou coletores de log.
Nós o usamos sem encontrar problemas graves. Não há praticamente nenhuma alocação dinâmica de memória, por isso é difícil imaginar que ele esteja fazendo algo errado. Obviamente, nós apenas o testamos no mundo real em um produto.
Quando o usamos, usamos no Win32, OSX e em várias distribuições Linux diferentes, entre elas o Ubuntu.
Quanto ao multi-threading: não usamos isso, mas pelo que me lembro da arquitetura da lib, parece que você só precisaria lidar com isso nos coletores de logs. ICBWT.
fonte
Você pode considerar a biblioteca de logon, em http://www.logog.org , que acho que pode satisfazer seus requisitos. Advertência: eu escrevi.
Consulte também as respostas de outras pessoas em /programming/696321/best-logging-framework-for-native-c .
fonte
Você pode estar interessado no Baical conjunto de ferramentas :
fonte