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.