«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как минимизировать стоимость отключенных операторов регистрации трассировки в Go?

Как минимизировать стоимость отключенных операторов регистрации трассировки в Go?

Опубликовано 9 ноября 2024 г.
Просматривать:663

How to Minimize the Cost of Disabled Trace Logging Statements in Go?

Недорогое ведение журнала трассировки в Go для отключенных операторов

В Go ведение журнала трассировки представляет собой уникальную задачу: минимизировать стоимость отключенных операторов журнала на критических путях. В отличие от C/C, в Go нет макросов препроцессора, поэтому необходимо искать альтернативные решения.

Один из подходов предполагает использование интерфейсов fmt.Stringer и fmt.GoStringer. Отложив форматирование до выполнения журнала, можно избежать дорогостоящих вызовов функций в аргументах журнала:

type LogFormatter interface {
    LogFormat() string
}

// Inside the logger
if i, ok := i.(LogFormatter); ok {
    fmt.Println(i.LogFormat())
}

Другая стратегия — заменить регистратор во время выполнения с помощью интерфейса регистратора или во время сборки с использованием ограничений сборки. Однако для этого необходимо убедиться, что в аргументы журнала не вставлены дорогостоящие вызовы.

Третий вариант — определить сам Logger как логическое значение, уменьшив многословие и одновременно предоставив краткий способ управления журналированием:

type Log bool
func (l Log) Println(args ...interface{}) {
    fmt.Println(args...)
}

var debug Log = false

if debug {
    debug.Println("DEBUGGING")
}

Наконец, можно изучить генерацию кода, хотя она не подходит для конфигурации во время выполнения. Используя gofmt -r или создавая файлы с использованием текста/шаблона, можно создавать отдельные сборки отладки для конкретных сценариев отладки.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3