Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Package log
  2. Print, Printf e Println
  3. Panic, Panicf e Panicln
  4. Fatal, Fatalf e Fataln
  5. Métodos

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
}

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
}

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

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

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

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 -
  1. 07/04/2025 - versão inicial