Los archivos de registro son una parte crítica de cualquier aplicación seria: si el registro en la aplicación es bueno, entonces le permiten ver qué eventos clave han sucedido y cuándo; qué errores han ocurrido; y el estado general de la aplicación que va más allá de cualquier monitoreo en el que se haya diseñado. Es común escuchar sobre un problema, verificar los diagnósticos integrados de la aplicación (abrir su consola web o usar una herramienta de diagnóstico como JMX), y luego recurrir a verificar el archivos de registro.
Si utiliza un formato que no es de texto, se enfrenta inmediatamente a un obstáculo: ¿cómo lee los registros binarios? ¡Con la herramienta de lectura de registros, que no está en sus servidores de producción! O lo es, pero querido, hemos agregado un nuevo campo y este es el viejo lector. ¿No probamos esto? Sí, pero nadie lo desplegó aquí. Mientras tanto, su pantalla comienza a encenderse con usuarios que le hacen ping.
¿O tal vez esta no es tu aplicación, pero estás brindando soporte y crees que sabes que es este otro sistema y WTF? los registros están en formato binario? Ok, comienza a leer páginas wiki y ¿por dónde empiezas? Ahora los he copiado en mi máquina local, pero ¿están dañados? ¿He realizado algún tipo de transferencia no binaria? ¿O la herramienta de lectura de registros está mal?
En resumen, las herramientas de lectura de texto son multiplataforma y omnipresentes, y los registros suelen ser de larga duración y, a veces, deben leerse rápidamente . Si inventas un formato binario, entonces estás aislado de todo un mundo de herramientas bien entendidas y fáciles de usar. Grave pérdida de funcionalidad justo cuando la necesita.
La mayoría de los entornos de registro tienen un compromiso: mantener los registros actuales legibles y presentes, y comprimir los más antiguos. Eso significa que obtendrá el beneficio de la compresión, más aún, de hecho, porque un formato binario no reduciría los mensajes de registro. Al mismo tiempo, puede usar menos y grep, etc.
Entonces, ¿qué posibles beneficios podrían surgir del uso de binarios? Una pequeña cantidad de eficiencia de espacio, cada vez menos importante. ¿Menos (o más pequeño) escribe? Bueno, tal vez, en realidad, el número de escrituras se relacionará con el número de confirmaciones de disco, por lo que si las líneas de registro son significativamente más pequeñas que el tamaño de bloque del disco, entonces un SSD asignaría nuevos bloques una y otra vez. Entonces, binario es una opción apropiada si:
- estás escribiendo grandes cantidades de datos estructurados
- los registros tienen que ser creados particularmente rápido
- es poco probable que necesite analizarlos en "condiciones de soporte"
pero esto suena menos como el registro de aplicaciones; Estos son archivos de salida o registros de actividad. Ponerlos en un archivo probablemente esté a solo un paso de escribirlos en una base de datos.
EDITAR
Creo que hay una confusión general entre los "registros de programa" (según los marcos de registro) y los "registros" (como en los registros de acceso, registros de inicio de sesión, etc.). Sospecho que la pregunta se relaciona más estrechamente con la última, y en ese caso el problema está mucho menos definido. Es perfectamente aceptable que un registro de mensajes o registro de actividad esté en un formato compacto, especialmente porque es probable que esté bien definido y utilizado para el análisis en lugar de la resolución de problemas. Las herramientas que hacen esto incluyen tcpdump
el monitor del sistema Unix sar
. Los registros de programas, por otro lado, tienden a ser mucho más ad hoc.