logging - log - ¿Cómo implementar el registro basado en nivel en Golang?
golang log to file (8)
Algunas sugerencias más, ahora que las respuestas existentes son bastante antiguas:
- https://github.com/op/go-logging - más pequeño que el otro aquí
- https://github.com/Sirupsen/logrus - utilizado en muchos proyectos populares como Docker
- https://github.com/inconshreveable/log15
- github.com/golang/glog - de Google, implementación de su biblioteca de glogos en C ++ en Go
¿Hay algún envoltorio bueno disponible para el registro basado en niveles en Golang? Si no es así, ¿cómo debo implementar yo mismo?
Lo que quiero es bastante simple. Quiero algunas funciones por ejemplo
log.Error()
log.Info()
etc, que muestran sus salidas a la salida estándar, así como las guardan en un archivo de registro (según el nivel dado al programa como argumento de la línea de comandos). ¿Cómo implemento esta envoltura?
Creo que seelog sus requirements , y parece ser bastante popular, ya que aparece a menudo en las discusiones de registro. Nunca lo usé en serio, así que no puedo comentar más allá de eso.
Echa un vistazo a http://cgl.tideland.biz y allí en el paquete "applog". Está funcionando de esa manera.
PD: todo el CGL está actualmente revisado y pronto se lanzará con nuevas funciones, pero con un nombre diferente. ;)
Estoy trabajando con rlog en este momento y me gusta su enfoque. El código se ve bien, simplista y suficientemente documentado.
Lo que me convenció:
- sin dependencias externas
- Puedo usar
rlog.Info()
cualquier lugar sin pasar las referencias - buen uso de variables de entorno
- número arbitrario de niveles de rastreo, por ejemplo,
rlog.Trace(4, "foo")
He añadido soporte de nivel de registro al paquete integrado de registro de Go. Puedes encontrar mi código aquí:
https://github.com/gologme/log
Además de agregar soporte para Info, Warn y Debug, los usuarios también pueden definir sus propios niveles de registro arbitrarios. Los niveles de registro se habilitan y deshabilitan individualmente. Esto significa que puede activar los registros de depuración sin obtener también todo lo demás.
stdlog ajusta exactamente a sus necesidades:
log := stdlog.GetFromFlags()
log.Info("Connecting to the server...")
log.Errorf("Connection failed: %q", err)
https://github.com/hashicorp/logutils Encontré que esto es muy fácil de usar y ni siquiera necesita cambiar las llamadas de método a log.Printf
de la biblioteca log.Printf
.
Uber-go/Zap : registro rápido, estructurado y nivelado en Go