Задача такова: взять риквест после парсинга и напечатать в логи, потмо по ним буду писта ьинтеграционнеы тесты так как есть только дока и никаких примеров валидных запросов..
Сейчас у меня есть
// DebugInfo represents debug info
func DebugInfo(a ...interface{}) {
fmt.Fprintln(os.Stderr, append([]interface{}{TI()}, a...)...)
}
но если будет конкретная структура данных то думаю этот метод просто напечатает в логи его адрес
fmt.Printf("request = '%+v'\n", request )
напротив напечатает все поля и их знаечния, что очень удобно
Если это логи процесса, запущенного в контейнере как основной (cmd или entrypoint), то весь stdout точно будет в логах. Printf точно идёт в stdout
Писать логи через fmt это сильно конечно
В основном именно потому что докер инфраструктура заточена под работу с одним основным процессом, то в 12 факторах есть рекомендация крутить в докере не более одного демона.
Я потому и спросил в чатике
Лучше загуглить миллиард статей про то как нужно логгировать в го
// Logger represents interface for logger type Logger interface { IDRequester Debugf(format string, args ...interface{}) Errorf(format string, args ...interface{}) Debug(args ...interface{}) Error(args ...interface{}) } Я сделал интерфейс но н ефакт что его реализация тоже будет писаться в докер логс ) потмоу вопрос валидный ) Плюс данные логи временные чисто дял тестинга
Zap, logrus, zerolog - и не нужно велосипеды писать
Если в докере ваш процесс главный, то stdout и stderr из него будут в docker logs
Обсуждают сегодня