Sobre el proyecto
Logrus es un logger estructurado para Go, diseñado para ser compatible con la API del logger de la biblioteca estándar. Está en modo de mantenimiento: el proyecto se centra en la seguridad, la corrección de errores y las mejoras de rendimiento, con nuevas funciones limitadas al trabajo de interoperabilidad, como log/slog de Go. El README señala que el registro estructurado ahora está ampliamente disponible en Go a través de alternativas como Zerolog, Zap y Apex.
Capacidades principales:
- Registro por niveles con siete niveles: Trace, Debug, Info, Warning, Error, Fatal y Panic. Un logger se puede configurar para emitir solo entradas con una severidad igual o superior a la elegida.
- Campos estructurados mediante WithField y WithFields, lo que fomenta un registro de clave-valor fácil de descubrir en lugar de mensajes formateados largos. Las entradas incluyen automáticamente time, msg y level.
- Campos predeterminados: WithFields devuelve un logrus.Entry que se puede reutilizar para adjuntar campos comunes como request_id o user_ip en varias declaraciones de registro.
- Formateadores: TextFormatter integrado (con código de colores cuando la salida es un TTY; de lo contrario, texto plano compatible con logfmt) y JSONFormatter para el análisis automático por herramientas como Logstash o Splunk. Las opciones incluyen ForceColors, DisableColors, DisableLevelTruncation, PadLevelText y FullTimestamp. Los formateadores personalizados implementan la interfaz Formatter.
- Hooks: adjuntan comportamiento a los niveles de registro, por ejemplo, enviar errores a rastreadores de excepciones, reenviar a StatsD o escribir en syslog. Existen hooks integrados y los hooks de terceros se enumeran en la wiki del proyecto.
- Informe del llamador: SetReportCaller(true) agrega el método llamador como un campo, con una sobrecarga medible indicada en el README.
- Integración con io.Writer: logger.Writer() expone el logger como un io.Writer, lo que permite redirigir la salida del log de la biblioteca estándar a través de los formateadores y hooks de Logrus.
- Compatibilidad con pruebas: el paquete de hook de prueba proporciona los ayudantes NewLocal, NewGlobal y NewNullLogger para verificar mensajes de registro en las pruebas.
- Manejadores de Fatal: RegisterExitHandler registra funciones que se ejecutan antes de os.Exit(1) en mensajes de nivel fatal, lo que resulta útil para un apagado ordenado.
- Seguridad de subprocesos: Logger está protegido por mutex de forma predeterminada; SetNoLock() puede desactivar el bloqueo cuando los hooks y la salida ya son seguros para subprocesos.
La rotación de logs no se incluye intencionalmente; el README recomienda herramientas externas como logrotate. La biblioteca no tiene una noción integrada de entorno, por lo que la selección de formateador y hooks por entorno queda a cargo de la aplicación.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.