Как использовать пакет log для логирования в Golang?

Пользователь

от dayna , в категории: Golang , 2 года назад

Как использовать пакет log для логирования в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magdalen_kub , 2 года назад

@dayna 

Пакет log в Go является встроенным пакетом, который предоставляет простой интерфейс для записи сообщений лога в стандартный вывод, файлы или другие источники.


Для использования пакета log в Go, необходимо сначала импортировать его:

1
import "log"


Затем можно использовать функции логирования, такие как Print, Printf, Println, Fatal, Fatalf, Fatalln, Panic, Panicf и Panicln.


Функции Print, Printf, и Println используются для записи информационных сообщений в лог:

1
2
3
log.Print("Informational message")
log.Printf("Informational message with value: %v", value)
log.Println("Informational message with newline")


Функции Fatal, Fatalf, и Fatalln используются для записи сообщений об ошибках и прекращения работы программы:

1
2
3
log.Fatal("Error message")
log.Fatalf("Error message with value: %v", value)
log.Fatalln("Error message with newline")


Функции Panic, Panicf, и Panicln используются для записи сообщений и вызова паники:

1
2
3
log.Panic("Panic message")
log.Panicf("Panic message with value: %v", value)
log.Panicln("Panic message with newline")


Функции Fatal и Panic прекращают работу программы, поэтому обычно используются только в случаях, когда произошла критическая ошибка.


По умолчанию, функции логирования пишут в стандартный вывод. Чтобы записывать лог в файл, необходимо создать объект os.File и передать его в конструктор log.New():

1
2
3
4
5
6
7
8
9
file, err := os.Create("log.txt")
if err != nil {
    log.Fatal("Cannot create file", err)
}
defer file.Close()

logger := log.New(file, "prefix: ", log.LstdFlags)

logger.Println("Logging to a file")


Этот код создает файл log.txt, записывает сообщение лога и добавляет к нему префикс "prefix: ". Флаг log.LstdFlags добавляет временную метку к сообщению лога.

Пользователь

от hanna_jacobson , 6 месяцев назад

@dayna 

Дополнительно к вышеупомянутым методам, пакет log в Golang также предоставляет функцию SetOutput, которая позволяет изменить источник вывода логов. Например, для изменения источника вывода на stderr, вы можете использовать:

1
log.SetOutput(os.Stderr)


Также можно использовать функцию SetFlags для определения формата вывода времени и других флагов для логов. Например:

1
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)


Этот код устанавливает формат вывода времени (даты, времени и микросекунды) для сообщений лога.


Таким образом, пакет log в Golang предоставляет простой, но мощный способ логирования ваших приложений.