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 ocurrido y cuándo; qué errores han ocurrido; y el estado general de la aplicación que va más allá de lo que se haya diseñado en el monitoreo. Es común escuchar acerca de un problema, verificar los diagnósticos incorporados de la aplicación (abrir su consola web o usar una herramienta de diagnóstico como JMX) y luego recurrir a archivos de registro.
Si usa un formato que no es de texto, entonces se enfrenta de inmediato a un obstáculo: ¿cómo leer los registros binarios? Con la herramienta de lectura de registros, que no está en sus servidores de producción! O lo es, pero, oh cielos, hemos añadido un nuevo campo y este es el viejo lector. ¿No probamos esto? Sí, pero nadie lo desplegó aquí. Mientras tanto, su pantalla comienza a iluminarse con los usuarios que le hacen ping.
¿O quizás esta no es tu aplicación, pero estás dando soporte y crees que sabes que es este otro sistema y WTF? Los registros están en formato binario? Ok, empieza a leer páginas wiki, ¿y dónde empiezas? Ahora los he copiado a mi máquina local, pero, ¿están dañados? ¿He hecho algún tipo de transferencia no binaria? ¿O la herramienta de lectura de registros está desordenada?
En resumen, las herramientas de lectura de texto son multiplataforma y ubicuas, y los registros suelen ser de larga duración y, a veces, deben leerse con prisa . Si inventas un formato binario, 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 se ponen en peligro: mantenga los registros actuales legibles y presentes, y comprima los más antiguos. Eso significa que obtiene 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 utilizar less y grep y así sucesivamente.
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 una SSD asignará nuevos bloques una y otra vez. Entonces, binario es una opción apropiada si:
- estás escribiendo grandes cantidades de datos estructurados
- los registros deben crearse particularmente rápido
- es poco probable que necesite analizarlos bajo "condiciones de soporte"
pero esto suena menos como el registro de aplicaciones; Estos son archivos de salida o registros de actividad. Colocarlos en un archivo probablemente esté a solo un paso de escribirlos en una base de datos.
EDIT
Creo que hay una confusión general entre "registros de programa" (según los marcos de registro) vs "registros" (como en 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 tema está mucho menos bien definido. Es perfectamente aceptable que un registro de mensajes o de actividades esté en un formato compacto, especialmente porque es probable que esté bien definido y se utilice para el análisis en lugar de la solución de problemas. Las herramientas que hacen esto incluyen tcpdump
y el monitor del sistema Unix sar
. Por otro lado, los registros de programas tienden a ser mucho más ad hoc.