Objetivos
Package log
O package log define um tipo de dado Logger(log) que contém o métodos para logar mensagens
formatadas de erro, aviso, alerta ou outros. O formato é configurado utilizando flags de data,
hora, nome de arquivo e outros.
Para uso dos recursos contidos no package log, esse deve ser importado no topo de nosso
arquivo main, por exemplo.
Sintaxe
import “log”
Ex 1:
package main
import "log"
func main() {
//uso de log
}
Formato da mensagem
Como mencionado, o formato da saída do log é feito utilizando as flags abaixo que são
passadas como argumentos para o método SetFlags. Essas flags podem ser acumuladas utilizando
o operador bitwise (|).
Sintaxe
func SetFlags(flag int)
Onde
flag:
Ldate: 2009/01/23 (local)
Ltime: 01:23:23 (local)
Lmicroseconds: 01:23:23.123123. (local)
Llongfile: /a/b/c/d.go:23
Lshortfile: d.go:23
LUTC:
Lmsgprefix: move "prefixo" do início linha para antes da mensagem
LstdFlags: Ldate | Ltime (padrão)
Ex 2:
package main
//import "fmt"
import "log"
func main() {
log.SetFlags(log.Ldate|log.Ltime); //dd/mm/yyyy hh mm ss
}
Exibindo mensagens: Print/f/ln
O tipo logger fornece os métodos Print, Printf e Println que possuem características dos mesmos
métodos do package fmt.
Sintaxe
func Print(v ...any)
func Printf(format string, v ...any)
func Println(v ...any)
Ex 3:
package main
//import "fmt"
import "log"
func main() {
log.SetFlags(log.Ldate); //dd/mm/yyyy
log.Print("teste package log"); //
log.SetFlags(log.Ltime);
log.Printf("teste %s log","package");
log.SetFlags(log.Lshortfile);
log.Println("teste package log")
}
Saída
2025/03/19 teste package log
17:43:40 teste package log
main.go:14: teste package log
Exibindo mensagens: Panic/f/ln
Os métodos Panic, Panicf e Panicln funcionam de forma semelhante ao
Print, Printf e Println em relação à exibição das mensagens. A diferença é que os métodos
panics invocam a função panic após a exibição da mensagem de log.
Sintaxe
func Panic(v ...any)
func Panicf(format string, v ...any)
func Panicln(v ...any)
Ex 4:
package main
//import "fmt"
import "log"
func main() {
log.SetFlags(log.Ldate); //dd/mm/yyyy
log.Panic("panic no package log"); //
log.SetFlags(log.Ltime); //Não será excutado
log.Printf("teste %s log","package");//
log.SetFlags(log.Lshortfile); //
log.Println("teste package log") //
}
Saída
2025/03/19 teste package log
panic: teste package log
Exibindo mensagens: Fatal, Fatalf e Fataln
Os métodos Fatal, Fatalf e Fataln funcionam de forma semelhante ao
Print, Printf e Println em relação à exibição das mensagens. A diferença é que os métodos
fatal invocam a função os.Exit(1) após a exibição da mensagem de log.
Sintaxe
func Fatal(v ...any)
func Fatalf(format string, v ...any)
func Fatalln(v ...any)
Ex 6:
package main
//import "fmt"
import "log"
func main() {
log.SetFlags(log.Ldate); //dd/mm/yyyy
log.Fatal("panic no package log"); // hh mm ss
log.SetFlags(log.Ltime); //Não será excutado
log.Printf("teste %s log","package");//
log.SetFlags(log.Lshortfile); //
log.Println("teste package log") //
}
Saída
2025/03/19 fatal no package log
exit status 1
Métodos
Além dos métodos vistos acima, o tipo Logger fornece os métodos abaixo:
Método |
Descrição |
Link |
Fatal(v ...any) |
Semelhante ao método Print, mas invoca os.Exit(1) |
- |
Fatalf(format string, v ...any) |
Semelhante ao método Printf, mas invoca os.Exit(1) |
- |
Fatalln(v ...any) |
Semelhante ao método Println, mas invoca os.Exit(1) |
- |
Flags() int |
Retorna flags configuradas |
- |
Output(calldepth int, s string) error |
- |
- |
Panic(v ...any) |
Semelhante ao método Print, mas invoca panic |
- |
Panicf(format string, v ...any) |
Semelhante ao método Printf, mas invoca panic |
- |
Panicln(v ...any) |
Semelhante ao método Println, mas invoca panic |
- |
Prefix() string |
Retorna o prefixo configurado |
- |
Print(v ...any) |
Semelhante ao método fmt.Print |
- |
Printf(format string, v ...any) |
Semelhante ao método fmt.Printf |
- |
Println(v ...any) |
Semelhante ao método fmt.Println |
- |
SetFlags(flag int) |
Seta as flags utilizadas |
- |
SetOutput(w io.Writer) |
- |
- |
SetPrefix(prefix string) |
Seta um prefixo para mensagem de log |
- |
Histórico de atualizações
- 07/04/2025 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.