Установите уровень ведения журнала в пакете glog

Как я могу установить уровень ведения журнала для пакета golang glog на ERROR.

пример.го:

package main

import (
    "github.com/golang/glog"
    "flag"
)

func main() {
    flag.Parse()
    glog.Info("Info level")
    glog.Error("Error level")
    glog.Flush()
}
$ go run example.go -logtostderr=true -stderrthreshold=ERROR
I1214 15:46:00.743002   13429 example.go:10] Info level
E1214 15:46:00.743211   13429 example.go:11] Error level

В приведенном выше примере я установил флаг stderrthreshold на ОШИБКУ, но все еще получаю журналы уровня INFO. Мне нужны только журналы уровня ERROR.

уровень glog работает с V, а не с информацией, предупреждением, ошибкой.

Volker 14.12.2020 12:39
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
1
2 442
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По умолчанию glog будет писать

  • все лог-сообщения в лог-файлы (по умолчанию они создаются в /tmp);
  • записывать сообщения с серьезностью stderrthreshold или выше в stderr.

При использовании флага -logtostderr=true это поведение изменяется:

Журналы записываются в стандартную ошибку, а не в файлы.

  • лог-сообщения не записываются в лог-файлы;
  • все сообщения журнала записываются в stderr.

Предположительно, stderrthreshold не действует при использовании -logtostderr=true. И в вашем вызове это все равно не имело эффекта, потому что порог по умолчанию уже ERROR.

Подводя итог, просто запустив go run example.go без каких-либо аргументов командной строки, только сообщения журнала с серьезностью ERROR или выше записываются в stderr, как вы хотели.

Другие вопросы по теме