Niveles de registro en Go
- Niveles de registro en Go
-
Niveles de registro en Go With
zerolog
-
Niveles de registro en Go With
Logrus
Este tutorial demuestra cómo crear y usar niveles de registro en Golang.
Niveles de registro en Go
Golang proporciona un paquete de registro llamado log
, que es un paquete de registro simple. Este paquete no ofrece registro nivelado; si queremos un registro nivelado, tenemos que agregar manualmente prefijos como depurar
, info
y advertir
.
Incluso el paquete de registro
de Golang no tiene la funcionalidad de registro nivelado, pero aún proporciona las herramientas básicas para implementar niveles de registro manualmente. Probemos un ejemplo básico para el paquete log
de Golang:
package main
import "log"
func main() {
log.Println("Hello, This is delftstack.com!")
}
El código anterior registrará el contenido dado y lo imprimirá. Ver la salida:
2009/11/10 23:00:00 Hello, This is delftstack.com!
Pero, ¿qué pasa con los niveles de registro? Como se mencionó anteriormente, podemos crear niveles de registro personalizados y un registrador personalizado.
Podemos usar el método log.New()
, que toma los siguientes tres parámetros para crear un nuevo registrador:
out
:out
se utiliza para implementar la interfazio.writer
para escribir los datos de registro.prefijo
: unprefijo
es una cadena que se agregará al comienzo de cada línea.bandera
: labandera
se utiliza para definir qué propiedades utilizará el registrador.
Ahora se suelen utilizar siete niveles de registro:
Nivel de registro | Descripción |
---|---|
Trace |
Nivel más bajo |
Debug |
Segundo nivel |
Info |
Tercer nivel |
Warn |
Cuarto Nivel |
Error |
Quinto Nivel |
Fatal |
Sexto Nivel |
Panic |
Nivel más alto |
Probemos un ejemplo para crear niveles de registro personalizados basados en los niveles de Información
, Advertencia
, Depuración
y Error
:
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
var (
Warning_Level *log.Logger
Info_Level *log.Logger
Debug_Level *log.Logger
Error_Level *log.Logger
)
func init() {
file, err := os.OpenFile("Demo_logs.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
log.Fatal(err)
}
Info_Level = log.New(file, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
Warning_Level = log.New(file, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)
Debug_Level = log.New(file, "Debug: ", log.Ldate|log.Ltime|log.Lshortfile)
Error_Level = log.New(file, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)
}
func main() {
Info_Level.Println("Loading the application.")
Info_Level.Println("Loading taking time.")
Warning_Level.Println("There is warning.")
Debug_Level.Println("Here is debugging information.")
Error_Level.Println("An Error Occured.")
// read the log file
data, err := ioutil.ReadFile("Demo_logs.txt")
if err != nil {
log.Panicf("failed reading data from file: %s", err)
}
fmt.Printf("\nThe file data is : %s", data)
}
El código anterior crea niveles de registro personalizados utilizando el paquete log
de Golang y escribe la información de registro en un archivo. Ver la salida:
The file data is : INFO: 2009/11/10 23:00:00 prog.go:32: Loading the application.
INFO: 2009/11/10 23:00:00 prog.go:33: Loading taking time.
WARNING: 2009/11/10 23:00:00 prog.go:34: There is warning.
Debug: 2009/11/10 23:00:00 prog.go:35: Here is debugging information.
ERROR: 2009/11/10 23:00:00 prog.go:36: An Error Occured.
Program exited.
Los niveles Fatal
y Pánico
también pueden provocar la finalización de un programa o aplicación, por lo que es imposible crear estos niveles de registro con un paquete log
integrado. Pero aparte del paquete log
, algunos paquetes de registro de terceros proporcionan siete niveles de registro incorporados. Explorémoslos.
Niveles de registro en Go With zerolog
El zerolog
es una biblioteca de terceros para Golang que se utiliza para el registro JSON estructurado. El zerolog
proporciona un registrador global, que se puede usar junto con el subpaquete log
para un registro simple.
Junto con el registro simple, el zerolog
también proporciona niveles de registro integrados. Hay siete niveles de registro en zerolog
, que incluyen Info
, Advertencia
, Depuración
, Error
y Trace
.
El paquete zerolog
se proporciona en GitHub y se puede descargar en Golang usando el siguiente comando:
go get -u github.com/rs/zerolog/log
Usar los niveles de registro es muy simple con zerolog
. Vea el ejemplo a continuación:
package main
import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func main() {
zerolog.SetGlobalLevel(zerolog.InfoLevel)
log.Trace().Msg("Tracing..")
log.Info().Msg("The file is loading.")
log.Debug().Msg("Here is some useful debugging information.")
log.Warn().Msg("There is a warning!")
log.Error().Msg("An Error Occured.")
log.Fatal().Msg("An Fatal Error Occured.")
log.Panic().Msg("This is a panic situation.")
}
El código anterior registrará la información según los niveles de registro. Ver la salida:
{"level":"info","time":"2009-11-10T23:00:00Z","message":"The file is loading."}
{"level":"warn","time":"2009-11-10T23:00:00Z","message":"There is a warning!"}
{"level":"error","time":"2009-11-10T23:00:00Z","message":"An Error Occured."}
{"level":"fatal","time":"2009-11-10T23:00:00Z","message":"An Fatal Error Occured."}
Program exited.
Niveles de registro en Go With Logrus
Logrus
es otro paquete de terceros para Golang, que proporciona inicio de sesión en JSON. El paquete Logrus
se proporciona en GitHub y se puede descargar usando el siguiente comando en cmd:
go get "github.com/Sirupsen/logrus"
Logrus
proporciona los siete niveles de registro, que incluyen Trace
, Debug
, Info
, Warn
, Error
, Fatal
y Panic
ordenados según la gravedad. El uso de estos niveles de registro también es similar al zerolog
, donde necesitamos usar el subpaquete log
.
Probemos un ejemplo con niveles de registro del Logrus
:
package main
import (
log "github.com/sirupsen/logrus"
)
func main() {
log.SetFormatter(&log.JSONFormatter{})
log.SetLevel(log.DebugLevel)
log.SetLevel(log.TraceLevel)
//log.SetLevel(log.PanicLevel)
log.Trace("Tracing the log info, Lowest level")
log.Debug("Debugging information. Level two")
log.Info("Log Info. Level three")
log.Warn("This is warning. Level Four")
log.Error("An error occured. Level Five")
// Calls os.Exit(1) after logging
log.Fatal("Application terminated. Level Six")
// Calls panic() after logging
log.Panic("Panic Situation. Highest Level.")
}
El código anterior registrará la información en función de los niveles utilizando el paquete Logrus
. Tenemos que establecer los niveles para mostrar algunos de los niveles de registro.
Ver la salida:
{"level":"trace","msg":"Tracing the log info, Lowest level","time":"2009-11-10T23:00:00Z"}
{"level":"debug","msg":"Debugging information. Level two","time":"2009-11-10T23:00:00Z"}
{"level":"info","msg":"Log Info. Level three","time":"2009-11-10T23:00:00Z"}
{"level":"warning","msg":"This is warning. Level Four","time":"2009-11-10T23:00:00Z"}
{"level":"error","msg":"An error occured. Level Five","time":"2009-11-10T23:00:00Z"}
{"level":"fatal","msg":"Application terminated. Level Six","time":"2009-11-10T23:00:00Z"}
Program exited.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook