El registro es la técnica de mantener registros para fines futuros en el ciclo de desarrollo de software. El registro es fundamental porque los registros ayudan con la depuración, el diagnóstico, la resolución de problemas y la supervisión del proyecto.
Puede usar el registro en varios niveles de sus aplicaciones para errores, advertencias, depuración y más.
Iniciar sesión Ir
La biblioteca estándar de Go contiene una Iniciar sesión paquete rico en funcionalidad. Maneja varios niveles de registro y métodos básicos relacionados con el registro que necesitará para su aplicación. sin embargo, el Iniciar sesión El paquete podría no ser la mejor opción si su aplicación es compleja y desea priorizar la productividad.
los Iniciar sesión El paquete no proporciona funcionalidad para registros estructurados. Los paquetes de registro estructurados brindan una funcionalidad que simplifica y mejora el proceso de registro. El ecosistema Go alberga muchos de estos paquetes.
1. Zap por Uber
Borrar es un paquete de registro rápido, estructurado y nivelado creado por el equipo de código abierto de Uber para escribir registros en Go. Uber creó el paquete Zap para proporcionar un registro de mayor rendimiento que otros paquetes en el ecosistema Go, incluido el
Iniciar sesión paquete.Hay dos registradores distintos en el paquete Zap. los Registrador La función maneja casos críticos de rendimiento. los Registrador azucarado ofrece más flexibilidad con su API de estilo printf, pero viene con una pequeña compensación en el rendimiento. Incluso el paquete SugaredLogger más lento es de 4 a 10 veces más rápido que otros paquetes de registro estructurado.
Ejecute lo siguiente en una línea de comando para instalar el paquete Zap:
Vamos Conseguirte Vamos.uber.org/zap
Necesitará una versión reciente de Go para instalar y utilizar correctamente la funcionalidad del paquete Zap.
registrador, err := zap. NuevaProducción() // instancia del registrador zap
si error! = nulo {
fmt. Imprimir (err. Error())
}aplazar registrador sincronizar() // vacía los búferes, si los hay
azúcar := registrador. Azúcar() // registrador azucarado aquíazúcar. Infow("Error al obtener la URL",
// Contexto estructurado como pares clave-valor escritos libremente.
"dirección URL", dirección URL,
"intentar", 3,
"retroceso", tiempo. Segundo,
)
azúcar. Infof("Error al obtener la URL: %s", URL) // usando el formateador de estilo printf
los registrador variable es una instancia de la borrar registrador, y el Azúcar El método es una instancia de registrador azucarado.
los Información El método escribe en la salida y el Información es la versión de formato del Información método.
2. El paquete Logrus
Logro es un paquete de registro estructurado para aplicaciones Go. Logrus es compatible con el registrador de biblioteca estándar, con una funcionalidad similar. Si tiene experiencia en el uso de la Iniciar sesión paquete, encontrará una suite que funciona con Logrus.
Logrus no admite el formato JSON de forma predeterminada. Pero siempre puede usar una biblioteca JSON como la incorporada json paquete con Logrus Establecer formateador método.
Logrus admite el registro en diferentes niveles y, aunque no tiene el mismo rendimiento que la mayoría de los paquetes de registro, tiene muchas funciones y es seguro.
Puede usar este comando para instalar Logrus en su directorio de trabajo:
Vamos obtener github.com/sirupsen/logrus
Aquí hay un ejemplo de inicio de sesión con el paquete Logrus.
importar (
"os"
registro "github.com/sirupsen/logrus" // importación de alias
)funciónprincipal {
Iniciar sesión. Establecer formateador(&log. Formateador JSON{}) // establece el formateador en JSON
Iniciar sesión. Establecer salida (os. estándar) // salida a salida estándar
Iniciar sesión. Establecer nivel (log. nivel de advertencia) // establece el nivel de advertencia
Iniciar sesión. ConCampos (log. Campos{
"Nombre": "Juan Pérez",
"Años": 40,
}).Info("Datos biográficos de John")
}
Este código importa la biblioteca Logrus y crea un alias para ella llamado Iniciar sesión. En el principal función, llama a la Establecer formateador método para establecer un formateador para los registros. Puedes usar el Establecer salida método para especificar dónde deben ir los mensajes de registro; en este caso, salida estándar.
los Establecer nivel El método registra advertencias en el nivel especificado o superior.
3. Paquete ZeroLog
registro cero es una biblioteca dedicada a JSON, rápida e inspirada en Zap para el registro, diseñada para el rendimiento. Utiliza una API de encadenamiento única que permite a Zerolog escribir JSON y registrar eventos sin asignaciones ni reflejos.
Zerolog tiene como objetivo proporcionar una API más fácil de usar y un mayor rendimiento, manteniendo la base del código y la API simples. Se centra en el registro estructurado y puede utilizar el Escritor de consola método para iniciar sesión bastante en su consola.
Hay asignación baja, registro nivelado, muestreo, enganches, campos contextuales y registro de errores con funciones de seguimiento de pila opcionales en el paquete Zerolog. También puede integrar Zerolog con el contexto y http paquetes
Ejecute este comando en la terminal de su espacio de trabajo para instalar el registro cero paquete.
Vamos obtener -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)
Aquí hay un ejemplo simple del uso del paquete Zerolog para una operación simple.
importar (
"github.com/rs/zerolog" // zerolog para configuraciones
"github.com/rs/zerolog/log" // registro para iniciar sesión
)funciónprincipal() {
// UNIX Time es más rápido y más pequeño que la mayoría de las marcas de tiempo
log cero. TimeFieldFormat = registro cero. Formato de horaUnix
Iniciar sesión. Imprimir("hola mundo")
}
los Formato de campo de tiempo la opción está establecida en el formato de hora de Unix, y el Impresión El comando escribe el argumento de texto en la salida estándar.
4. El paquete Log15
los Registro15 El paquete es un conjunto de herramientas simple y obstinado para el registro legible por humanos y máquinas con las mejores prácticas en Go. Log15 modela el yo y http paquetes de la biblioteca estándar de Go como alternativa a la biblioteca integrada Iniciar sesión paquete.
Las características del paquete Log15 incluyen:
- una API simple y fácil de entender
- registro estructurado con pares clave-valor
- registradores de niños con contexto privado
- interfaz de controlador para construir configuraciones de registro personalizadas sobre una pequeña API
- soporte terminal coloreado
- soporte incorporado para iniciar sesión en archivos, transmisiones, registros del sistema y registros de red
- registros de almacenamiento en búfer para la salida.
puedes instalar Registro15 a sus paquetes de Go con este comando.
Vamos obtener github.com/inconshreveable/log15
Es fácil comenzar con el paquete Log15. Este es un ejemplo de creación de instancias de un registrador y registro de información y niveles de error con el paquete.
importar (
registro "github.com/inconshreveable/log15" // importar alias como registro
)
funciónprincipal() {
registro del servidor: = registro. Nuevo("repositorio", "nuevo repositorio") // instanciando registrador
registro del servidor. Info("comprobación de estado de la capa de repositorio satisfactoria") // registro de información
registro del servidor. Error ("Falló la comprobación de estado de la capa del repositorio") // registro de errores
}
los registro del servidor la variable es una instancia del registrador Log15; la Nuevo El método devuelve un registrador con los argumentos de contexto que proporciona.
los Información método devuelve un mensaje de información, y el Error método devuelve un mensaje de error.
Escriba registros útiles y comprensibles
El registro puede ser tan crítico como cualquier otra parte del proceso de desarrollo. Puede parecer muy fácil en las etapas iniciales, pero apegarse a las prácticas esenciales puede complicar el proceso. Para manejar cada caso límite y aspecto del registro, debe usar un paquete de registro para facilitar las cosas.
Utilice los niveles de registro, la estructura y el contexto para que sus registros sean comprensibles y se ajusten a los fines previstos.