Skip to content

log

Стандартный пакет log в Go реализует простое ведение журналов.

go
func main() {
   log.Println("日志")
   log.Panicln("panic 日志")
   log.Fatalln("错误日志")
}

Fatal вызывает os.Exit(1) после записи сообщения журнала, panic выбрасывает panic.

Префикс

go
func (l *Logger) Prefix() string // Получить префикс

func (l *Logger) SetPrefix(prefix string) // Установить префикс

Пример:

go
func main() {
  log.SetPrefix("[main]")
  log.Println("日志")
  log.Panicln("panic 日志")
}

Flag

Методы:

go
func (l *Logger) Flags() int // Получить

func (l *Logger) SetFlags(flag int) // Установить

Константы:

go
const (
   Ldate         = 1 << iota     // Дата
   Ltime                         // Время
   Lmicroseconds                 // Микросекунды
   Llongfile                     // Полное имя файла
   Lshortfile                    // Короткое имя файла
   LUTC                          // Часовой пояс
   Lmsgprefix                    // Префикс
   LstdFlags     = Ldate | Ltime // Значение по умолчанию
)

Пример:

go
func main() {
   log.SetFlags(log.Lshortfile | log.Lmicroseconds | log.Lmsgprefix | log.Ldate | log.Ltime)
   log.Println("日志")
   log.Panicln("panic 日志")
}

Конечно, можно использовать log.SetOutput(w io.Writer) для установки пути вывода журнала, также можно создать собственный экземпляр через метод New.

go
func New(out io.Writer, prefix string, flag int) *Logger

В целом, пакет log стандартной библиотеки предоставляет недостаточно полный функционал, поэтому обычно используются более полные сторонние пакеты ведения журналов, например zap и другие.

Golang by www.golangdev.cn edit