Conozco muchas bibliotecas de registro, pero no probé muchas. (GoogleLog, Pantheios, el próximo impulso :: log library ...)
En los juegos, especialmente en juegos remotos multijugador y multiproceso, el registro es vital para la depuración, incluso si elimina todos los registros al final.
Digamos que estoy haciendo un juego de PC (no consola) que necesita registros (multijugador y multiproceso y / o multiproceso) y tengo buenas razones para buscar una biblioteca para iniciar sesión (como, no tengo tiempo o estoy no estoy seguro de mi capacidad de escribir uno correctamente para mi caso).
Asumiendo que necesito:
- actuación
- facilidad de uso (permitir transmisión o formateo o algo así)
- confiable (¡no tenga fugas ni choque!)
- multiplataforma (al menos Windows, MacOSX, Linux / Ubuntu)
¿Qué biblioteca de registro recomendarías?
Actualmente, creo que boost :: log es el más flexible (¡incluso puede iniciar sesión de forma remota!), Pero no tiene una buena actualización de rendimiento : es para un alto rendimiento, pero aún no se ha lanzado. Pantheios se cita a menudo, pero no tengo puntos de comparación en cuanto a rendimiento y uso. He usado mi propia biblioteca durante mucho tiempo, pero sé que no gestiona el subprocesamiento múltiple, por lo que es un gran problema, incluso si es lo suficientemente rápido. Google Log parece interesante, solo necesito probarlo, pero si ya ha comparado esas bibliotecas y más, su consejo podría ser útil.
Los juegos son a menudo exigentes en cuanto a rendimiento y complejos para depurar, por lo que sería bueno conocer las bibliotecas de registro que, en nuestro caso específico, tienen claras ventajas.
Respuestas:
inicie sesión con socket (cualquier envoltorio de socket puede ser suficiente) + navegador web websocket => la herramienta de registro más versátil y discreta posible, obtendrá horas de depuración y evitará el dolor ocular.
Ahora, la bonificación:
y muchas más tareas fuera del registro:
(casi todo lo anterior se puede hacer usando sockets flash, guarde las capacidades de la base de datos)
Ahora sé que parece un poco largo configurarlo. Pero realmente es una ganancia de tiempo en proyectos largos, con una situación de depuración difícil (como en los juegos). Es lo más poderoso que utilicé desde los depuradores ...
Nota 1: el único inconveniente => doble efecto secundario al depurar el código de red del juego (impacto en el tamaño del búfer de socket, latencia, ancho de banda, etc.)
Nota 2: algunos broswer están desactivados por defecto en websocket debido a razones de seguridad, verifique: configure las cosas para asegurarse de que esté habilitado.
fuente
Cuando se trata de rendimiento, he encontrado templog prácticamente invicto. Utiliza plantillas de expresión para diferir la evaluación de las declaraciones de registro hasta que se establezca que la información se registrará en absoluto. Dado que también puede desactivar parcialmente el registro (según la gravedad, el origen y el público objetivo de un mensaje de registro), el compilador puede eliminar algunas de estas instrucciones de registro a código cero para compilaciones de lanzamiento. (De hecho, he visto que esto suceda con VC).
No se ha hecho mucho a la biblioteca recientemente, y otros en SO han encontrado que el baúl carece en algunos aspectos, pero en una compañía para la que solía trabajar, hemos encontrado al tipo bastante receptivo, y uno de mis entonces trabajadores de vaca incluso obtuve acceso de confirmación y le agregué un código, por lo que es posible que valga la pena intentarlo.
Para enumerar sus requisitos:
Lo mejor que he encontrado. Especialmente su capacidad para excluir mensajes de registro en tiempo de compilación y hacer que el compilador los elimine por completo fue muy atractivo.
Hay los mensajes de error clásicos y horribles del compilador de plantillas-meta cosas cuando haces algo mal, pero cuando se trata de facilidad de uso, esto
Es difícil de superar.
Sin embargo, es posible que tenga que crear sus propios sumideros de registro (ahí es donde van los mensajes de registro), ya que los pocos preempaquetados (stderr, archivo, registro de Windows, etc.) no son tan sofisticados. Debido a que el rendimiento es un objetivo principal, los aspectos intrínsecos de todo el asunto son algo complicados (como que los formateadores de mensajes de registro están bastante enredados con los sumideros de registro), pero lo dominamos (recuerdo haberlo pasado en un depurador que ayuda con eso) y una vez entendí que no era tan difícil escribir sus propios formateadores de mensajes o sumideros de registros.
Lo hemos usado sin encontrar problemas tan graves. Prácticamente no hay asignación dinámica de memoria allí, por lo que es difícil incluso imaginar que haga algo mal. Por supuesto, solo lo ponemos a prueba en el mundo real en un solo producto.
Cuando lo usamos, lo usamos en Win32, OSX y varias distribuciones de Linux diferentes, Ubuntu entre ellas.
En cuanto a los subprocesos múltiples: no hemos usado esto, pero por lo que recuerdo de la arquitectura de la biblioteca, parece que solo necesitaría manejar esto en los sumideros de registro. ICBWT.
fuente
Es posible que desee considerar la biblioteca logog, en http://www.logog.org , que creo que puede satisfacer sus requisitos. Advertencia: lo escribí.
Consulte también las respuestas de otras personas en /programming/696321/best-logging-framework-for-native-c .
fuente
Quizás te interese Baical conjunto de herramientas :
fuente