Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Uso De Xml Para Ficheros Log

Iniciado por Douch, 14 de Junio de 2005, 09:48:47 PM

« anterior - próximo »

Douch

 Interesante artículo publicado en Gamedev.net sobre la utilización de XML para la creación de ficheros log en nuestros programas. Viene explicado paso a paso con ejemplos de como quedaría la cosa.

No se, quizás para uno mísmo es un poco exagerado, al fin y al cabo nosotros sabremos que datos necesitamos mirar para localizar el posible fallo de nuestro programa, pero lo veo muy útil para una empresa o grupo de trabajo que necesite obtener información clara y concisa. Claridad diría yo que es la palabra clave. No es lo mísmo ver un chorretón de líneas en el notepad sin formato alguno que ver una página en HTML todo colocadito, con colorines y distíntos formatos y tamaños del texto.

¿Alguien ha utilizado éste método alguna vez?. ¿Y sin usar XML?(HTML a pelo).

CoLSoN2

 Mi sistema de logging usa HTML más que nada por formatear un poco el output, que texto plano muchas veces es insuficiente.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ShAq

 en nuestra web lemonteam.com tenemos una pequeña clase
de log en html, es muy facil de usar, (software/lemongt)

mmm, yo creo que hacer logs en xml es complicarse demasiado...,
porque luego necesitarás un visor....

fiero

 Si alguien ha programado alguna vez en PHP es muy parecido a programar en C++ y hacer salida en HTML. Se trata de saber un poco las etiquetas básicas HTML, y puedes hacer que el programa genere auténticas virguerías.

un saludo
www.videopanoramas.com Videopanoramas 3D player

Helius

 Yo uso un sistema algo más complicado pero más eficiente.

En vez de estar escribiendo constantemente el texto en un fichero he construido una aplicación externa que recibe mensajes de cualquier otra aplicación previamente compilada con su API.

Esta aplicación siempre esta en ejecución y caza todos los mensajes que le envian sus clientes para después organizármelos separados en ventanas y por prioridad, etc. En esta aplicación ya puedo darles el tratamiento que quiera e incluso guardar el contenido de una ventana a HTML o XML, buscar palabras, ordenar por prioridad, tener más de una ventana para cada app por ejemplo para engine, sonido, física...

Esto tiene la ventaja de que no se accede para nada a disco mientras se ejecuta el juego. Además puedo almacenar muchos logs de la aplicación (diferentes ejecuciones en diferentes horas) para poder comparar.

Si alguien esta ejecutando el juego y no tiene la aplicación que recibe los mensajes siempre queda la posibilidad de que las llamadas del API graben a disco en vez de enviar (si no localiza al host). Este fichero que graba a disco puede ser abierto por el host y verlo finalmente en ventas, con todas sus ventajas.

Los mensajes los pasa usando el sistema de mensajes de windows entre aplicaciones en caso de que el host y el cliente esten en la misma máquina, y si no, lo hace por sockets (es genial ver el log en tiempo real que esta ejecutando un grafista al otro lado del país ;) )

Saludos.
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

CoLSoN2

 @fiero: cómo piensas integrar PHP en un juego (por supuesto no hablamos de juegos web)? Total, tampoco necesitas hacer "virguerías" con HTML.

@helius: im-presionante. Me gustaría verlo en funcionamiento, pero más aún el API que debe usar la aplicación que manda los mensajes.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet

 En mi opinión es mucho más importante que el log en la aplicación sea una ayuda y no un estorbo, es un engorro tener que llamar a las funciones de log para tareas rutinarias y que son monótonas. Un ejemplo, si tienes un sistema de log que captura los errores y te devuelve el stack de llamadas sería _cojonudo_ no tener que preocuparte por poner los diferentes comentarios, o si falla una función no tener que especificar qué función, valores etc, lo mismo para todos los sistemas, warnings, problemas, información..

La aplicación de helius parece interesante, yo si fuera tú la enseñaría en estos foros :P

Zaelsius

#7
 Ethy, seguro que disfrutas leyendo este par de artículos sobre "asserts" en C++, por Alexandrescu(si no los has leído ya, que es muy probable):

(ENLACES REMOVIDOS PORQUE HAN DEJADO DE EXISTIR)

ethernet

 Muy interesantes, también recomiendo ver el code del unreal (la parte que dejan) y ver como hace uso de las excepciones y las macros para generar una información muy valiosa en petes, ya la hemos comentado alguna vez por el foro.

En el cotw!! también hay algún código para debuggear muy interesante.


fiero

Cita de: "CoLSoN2"@fiero: cómo piensas integrar PHP en un juego (por supuesto no hablamos de juegos web)? Total, tampoco necesitas hacer "virguerías" con HTML.
El PHP no hace maravillas. Las maravillas las hace el programador. No me refería a meter PHP en un juego, me refería a que la idea de formatear HTML para hacer un log no es tan dificil, y que cualquiera que haya programado en PHP solo tendría que cambiar "echo" por "CFile::Write" en C++

un saludo  
www.videopanoramas.com Videopanoramas 3D player

StraT

 No hace mucho programé una clase para logs en c#, xhtml y css para el motor Haddd. Al final no sé si se llegó a utilizar, pero es interesante el uso de css, ya que te ahorras tags de estilo en el código del programa, y puedes cambiar el formato de salido del archivo del log como quieras sin cambiar el programa, recompilar, ni nada parecido. De hecho el uso de clases puede evitar tener que usar los tags html en C++, ya que podemos especificar funciones del tipo:

Log::ErrorGrave();
Log::ErrorLeve();
Log::Info();

y usar nuestro objeto en distintas aplicaciones sin saber como estan hechas las funciones, y por tanto los tags html.

Un saludo
quot;Solo hay dos cosas infinitas, el universo y la estupidez humana, aunque de lo primero no estoy muy seguro\\\" Einstein

Helius

 
Cita de: "CoLSoN2"@helius: im-presionante. Me gustaría verlo en funcionamiento, pero más aún el API que debe usar la aplicación que manda los mensajes.

Pues lo hice para una empresa así que logicamente no puedo mostrároslo :(

El API es muy sencillo, tan sólo es una DLL con unos cuantos ficheros de cabecera para llamar a las funciones. Usas este API en el proyecto que quieras logear y el sólo se encarga de mandar los mensajes al host.

El código de unreal del que hablais es genial, yo lo implemente en mi motor:

#define Guard(func)   {static const TCHAR __FUNC_NAME__[]=TEXT(#func); try{
#define Unguard()    }catch(TCHAR*Err){throw Err;}catch(...){LOG.Write(LOG_APP, "#!** EXCEPTION Stack: %s", __FUNC_NAME__); throw;}}

Saludos.

Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

ethernet

 De cualquier forma tenemos algunas cosas parecidas en el mundo software:

- syslog de linux permite logear en una máquina remota.
- el módulo de log de python permite indicar donde quieres que se loguee, a fichero, usando HTTP, SMTP, además permite un formateo para los diferentes grados de logueo y loguear a varios logs simulataneamente. python rocks ->  http://docs.python.org/lib/module-logging.html


De todas formas creo que la potencia real de la aplicación de helius no es la técnica, si no la comercial, con ese sistema se puede obtener una cantidad de datos valiosísimos acerca de a qué juega caga jugador, como le gusta jugar, cuando juega, qué hace y encima saber si la aplicación va bien o mal. Lo que es el Bussines intelligence :)

Helius

 
Cita de: "ethernet"De todas formas creo que la potencia real de la aplicación de helius no es la técnica, si no la comercial, con ese sistema se puede obtener una cantidad de datos valiosísimos acerca de a qué juega caga jugador, como le gusta jugar, cuando juega, qué hace y encima saber si la aplicación va bien o mal. Lo que es el Bussines intelligence :)
Hombre, la verdad que no estaba pensada para eso y ciertamente es ilegal si antes no le pides permiso al jugador... pero visto así es una gran idea  :P

Lo de loguear a distancia era principalmente para el soporte técnico, aunque se le pueden encontrar muchos más usos.

Saludos.
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.