Функция log.New

Функция log.New создает новый логгер, который записывает сообщения в указанный выходной поток. Первым параметром функция принимает интерфейс io.Writer, куда будут записываться логи, вторым параметром - строку с префиксом, который добавляется в начало каждого сообщения, третьим параметром - флаги, определяющие форматирование сообщений.

Синтаксис

golog.New(w io.Writer, prefix string, flag int) *log.Logger

Пример

Давайте создадим логгер, который записывает сообщения в стандартный вывод с префиксом "INFO: " и флагом, добавляющим время и дату:

gopackage main

import (
  "log"
  "os"
)

func main() {
  logger := log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime)
  logger.Println("Application started")
  logger.Println("Processing data")
}

Результат выполнения кода:

go"INFO: 2026/09/04 15:30:45 Application started"
"INFO: 2026/09/04 15:30:45 Processing data"

Пример

Давайте создадим логгер для записи ошибок в файл с префиксом "ERROR: " и флагом, добавляющим время, дату и имя файла с номером строки:

gopackage main

import (
  "log"
  "os"
)

func main() {
  file, err := os.Create("app.log")
  if err != nil {
    log.Fatal(err)
  }
  defer file.Close()

  logger := log.New(file, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)
  logger.Println("Database connection failed")
  logger.Println("Invalid user input")
}

Содержимое файла после выполнения кода:

go"ERROR: 2026/09/04 15:30:45 main.go:12: Database connection failed"
"ERROR: 2026/09/04 15:30:45 main.go:13: Invalid user input"

Пример

Давайте создадим несколько логгеров с разными уровнями логирования, пишущих в один выходной поток:

gopackage main

import (
  "log"
  "os"
)

func main() {
  infoLogger := log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime)
  errorLogger := log.New(os.Stdout, "ERROR: ", log.Ldate|log.Ltime)

  infoLogger.Println("User logged in")
  errorLogger.Println("Failed to save file")
  infoLogger.Println("User logged out")
}

Результат выполнения кода:

go"INFO: 2026/09/04 15:30:45 User logged in"
"ERROR: 2026/09/04 15:30:45 Failed to save file"
"INFO: 2026/09/04 15:30:45 User logged out"

Пример

Давайте создадим логгер без префикса и флагов, который просто записывает сырые сообщения:

gopackage main

import (
  "log"
  "os"
)

func main() {
  logger := log.New(os.Stdout, "", 0)
  logger.Print("Raw message 1")
  logger.Print("Raw message 2")
}

Результат выполнения кода:

go"Raw message 1"
"Raw message 2"

Смотрите также

  • функцию log.SetFlags,
    которая устанавливает флаги форматирования для стандартного логгера
  • функцию log.SetPrefix,
    которая устанавливает префикс для стандартного логгера
  • функцию log.SetOutput,
    которая изменяет выходной поток для стандартного логгера
  • тип log.Logger,
    который представляет собой экземпляр логгера