Registro de Fiber
Podemos usar logs para observar o comportamento do programa, diagnosticar problemas ou configurar alertas correspondentes. Definir um registro bem estruturado pode melhorar a eficiência da pesquisa e facilitar o tratamento de problemas.
O Fiber fornece uma maneira padrão de imprimir logs na saída padrão. Também fornece várias funções globais, como log.Info, log.Errorf e log.Warnw.
Níveis de Log
const (
LevelTrace Nível = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
Log Personalizado
O Fiber fornece a interface AllLogger para se adaptar a várias bibliotecas de registro.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
Imprimindo Logs
Nota: Chamar métodos em um nível Fatal irá interromper a execução do programa após imprimir o log. Por favor, use com cautela. Imprimir diretamente logs em diferentes níveis será inserido na messageKey e por padrão está definido como msg.
log.Info("Olá, mundo!")
log.Debug("Você está bem?")
log.Info("42 é a resposta para a vida, o universo e tudo mais")
log.Warn("Estamos sob ataque!")
log.Error("Houston, temos um problema.")
log.Fatal("Até logo, e obrigado pelos peixes.")
log.Panic("O sistema está inativo.")
Formatação e impressão de logs em diferentes níveis, todos os métodos terminam com f.
log.Debugf("Olá %s", "garoto")
log.Infof("%d é a resposta para a vida, o universo e tudo mais", 233)
log.Warnf("Estamos sob ataque %s!", "chefe")
log.Errorf("%s, temos um problema.", "Mestre Shifu")
log.Fatalf("Até logo, e obrigado por todos os %s.", "banana")
Imprimindo mensagens com chaves e valores. Se as chaves e valores não estiverem pareados, será impresso CHAVES E VALORES DESCOMPASSADOS.
log.Debugw("", "Olá", "garoto")
log.Infow("", "número", 233)
log.Warnw("", "trabalho", "chefe")
log.Errorw("", "nome", "Mestre Shifu")
log.Fatalw("", "fruta", "banana")
Registro Global
Se você deseja usar apenas uma função de log simples em um projeto e imprimi-la globalmente a qualquer momento, fornecemos um log global.
import "github.com/gofiber/fiber/v2/log"
log.Info("informação")
log.Warn("aviso")
O código acima usa o log.DefaultLogger padrão para a saída padrão. Você também pode encontrar adaptadores já implementados na pasta contrib, ou usar seu próprio Logger implementado e definir o logger global usando log.SetLogger.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// Injetar logger personalizado
fiberlog.SetLogger(customLogger)
Definir Nível
log.SetLevel define os logs que são inferiores a este nível e não serão exibidos. O gravador de log padrão é LevelTrace.
Por favor, note que este método não é seguro para concorrência.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
Definir Saída
log.SetOutput define o destino de saída para o registro. Por padrão, o registro imprime logs no console.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
Definir o destino de saída como um arquivo.
// Saída para o arquivo test.log
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
Definir o destino de saída tanto para o console quanto para um arquivo.
// Saída para o arquivo test.log
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)
Vincular Contexto
Defina o contexto e use o seguinte método para retornar uma instância de CommonLogger vinculada ao contexto especificado.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
Observação: Esta é a biblioteca de logging padrão para o framework Fiber. Claro, você pode escolher outras bibliotecas de logging de código aberto bem conhecidas em Go.