
Arch
23.03.2018
09:10:25
я думал про v6 пару лет назад, почитал, посмотрел что еще добрая половина железо-софта не умеют с ним работать и забил
Я вот только про маски не догнал, нафига на каждое устройство давать по /64?

Dmitry
23.03.2018
09:14:38
Чтобы https://www.ietf.org/rfc/rfc3972.txt

Marlik
23.03.2018
12:18:34
Люди подскажите, мне нужно померить в коде сколько времени проходит между событиями, как юзаете? Какой-нить таймстамп?

Google

Aleksandr
23.03.2018
12:20:12
start := time.Now()
duration := time.Since(start)

Marlik
23.03.2018
12:24:51

Nick
23.03.2018
12:30:00
Ребят всем привет, сорри за оффтоп.
Мы (Grinteq Belarus), ищем сениора GO разработчика с бекграундом C++ или Ruby.
Работа ремоут или в Минске. Пишите в личку за деталями.

Marlik
23.03.2018
12:33:10

Nick
23.03.2018
12:33:33

dimcha
23.03.2018
12:38:23
Подскажите плз, как нужно правильно организовать логгинг? Т.е. у меня есть приложение, оно использует какой-то логгер. Я хочу использовать инстанс логгера в своих либах, которые использует мое приложение. Но встает ограничение на повторное использование этих либ в дргих приложениях - они будут вынуждены использовать тот-же логгер. Как решается эта проблема? Может есть good-practice с интерфейсами или как-то иначе?

Zver
23.03.2018
12:40:55

dimcha
23.03.2018
12:41:17
а что использовать?

Zver
23.03.2018
12:42:51

dimcha
23.03.2018
12:43:03
а дебаг либы как делать?
да и просто есть вещи которые хочется залоггировать из либы

Dmitry
23.03.2018
12:43:47
Ну просто в либе указываете нужный интерфейс, а логгер пусть внешнее приложение свой прокидывает

Zver
23.03.2018
12:43:56
На основании возвращаемых ошибок делайте дебаг.

Google

Dmitry
23.03.2018
12:44:14
Если не указан логгер - просто создаете заглушку NilLogger внутри и пишете логи в никуда

dimcha
23.03.2018
12:45:38
с интерфейсами я и сам догадался, но хочется что-то более универсально, типа GelLogger(..) из либы из любого места и использовать если он определен

Zver
23.03.2018
12:46:31
Но все же для либ по мне просто возвращать ошибки, в крайних случаях паника. Без всяких логеров. Это уже прерогатива приложения.

dimcha
23.03.2018
12:46:35
неуж-то каждый сам велосипедит?

Dmitry
23.03.2018
12:47:00
Да там решение на пару строк, зачем городить огород?

dimcha
23.03.2018
12:47:23

Zver
23.03.2018
12:47:24

Dmitry
23.03.2018
12:47:33
Интерфейс логгера, NilLogger, IF проверяющий, что передали не nil

Igor
23.03.2018
12:48:14
fmt.Println внутривенно тебе, брат

Dmitry
23.03.2018
12:48:18
Не слушайте никого про "библиотеки и отсутствие логгеров" - у каждого свой случай и иногда либы бывают большими и внутри многое происходит, да и дебажить проще

dimcha
23.03.2018
12:48:53
чтоб совсем прозрачно

Zver
23.03.2018
12:49:16

Dmitry
23.03.2018
12:49:22
Глобавльный логгер не нужен
Синглтоны - зло :)

dimcha
23.03.2018
12:50:54
не хочется его в параметрах функциям передавать. Хочется магии

Zver
23.03.2018
12:51:30

dimcha
23.03.2018
12:51:51

Google

Dmitry
23.03.2018
12:52:11
Ну передавайте в конструкторе тогда
И храните указатель на него

Mike
23.03.2018
12:52:36
А в чем проблема сделать глобально? Гошка позволяет такие извращения

dimcha
23.03.2018
12:52:39
ну, выходит только так, через конструктор.

Zver
23.03.2018
12:52:42

dimcha
23.03.2018
12:52:59

Igor
23.03.2018
12:53:12
log.Printf тебе внутривенно

dimcha
23.03.2018
12:53:59
всем спасибо за идеи. Жаль что единого стайла нет

Zver
23.03.2018
12:54:12
А потом понипишут кучу библиотек с логерами и привинчивай к каждой либе логгер, при том еще и оборачивать во что-то придется.

Mike
23.03.2018
12:54:48
Единый интерфейс для логов решил бы эту проблему.

dimcha
23.03.2018
12:55:21
странно, что этот момент не продумали в стдлибе изначально. В питоне есть отличный модуль logging и никто там не велосипедит уже со 2 версии питона. А тут отдали на откуп авторам приложений...

Mike
23.03.2018
12:56:10
го_не_для_компутер_сайентистов.jpg

Zver
23.03.2018
13:05:33
Тогда используете стандартный логгер. Кому надо тот установит куда выводить. И делать по умолчанию отключенным логирование.

dimcha
23.03.2018
13:08:43
увы, он некрасивый )

Zver
23.03.2018
13:09:03

dimcha
23.03.2018
13:09:39
всмысле чтобы он нормальный формат поддерживал и цвета, его надо своим кодом обмазать чуть менее чем полностью

Alexey
23.03.2018
13:25:36
Надо чтоб в XML выхлоп был

Daniel
23.03.2018
13:26:35

Mike
23.03.2018
13:26:58

dimcha
23.03.2018
13:27:28

Google

Daniel
23.03.2018
13:27:49
Ну, были сомнения

Mike
23.03.2018
13:27:58

Daniel
23.03.2018
13:28:13
Встроенный да

dimcha
23.03.2018
13:29:39
да, смотреть глазами. Но и грепать тоже. Вот пример того что нужно мне:
[D 19:14:08] http-api-server.go:107 handlerCreateBuild() invoked from 127.0.0.1:57164
[I 19:14:08] http-api-server.go:134 build 7741e8003ff5534c61c22453fc859ae2 (ew-config-server-1.16-2) added
[I 19:14:08] pool-build.go:19 worker 1: processing ew-config-server-1.16-2
[D 19:14:08] manifestjob.go:78 unmarshal manifest
[D 19:14:08] manifestjob.go:86 create log files for current job
[D 19:14:08] manifestjob.go:100 create loggers for std(err|out)
и в цвете, если вывод на консоль

Admin
ERROR: S client not available

dimcha
23.03.2018
13:30:15
увы встроенный этого из коробки дать не может

Daniel
23.03.2018
13:37:48
structlog я вам рекоммендую

dimcha
23.03.2018
13:41:21
дык их легион таких, но мне нужен human readable в первую очередь. Для машин я могу и в protobuf отгружать, минуя стадию записи в файл.

Daniel
23.03.2018
13:41:43
я понял, и выдал рекоммендацию

dimcha
23.03.2018
13:42:03
спасибо, но разговор был немного не об этом.

Daniel
23.03.2018
13:42:18
об этом

dimcha
23.03.2018
13:42:29
я расчитывал получить good practice, а их нет. Тут кто во что горазд

Daniel
23.03.2018
13:42:37
из всех логгеров именно структлог наиболее читабельный выхлоп дает. ну - на мой взгляд

dimcha
23.03.2018
13:42:41
и у каждого свой велосипед

tsov
23.03.2018
14:01:36

Daniel
23.03.2018
14:13:42
ну-ну.
вы хоть доку-то прочли?

Google

dimcha
23.03.2018
14:28:41
log.Err("message to log", "error to log and return", err)
какую строку в лог запишет?
и как будет выглядеть аналог
ctx.log.I("container %s (image:%s) created", containerRequest.Name, fingerprint)
?

Arch
23.03.2018
14:35:07
А говорили, что плохо логгеры через контекст передавать
Мол не по прославному это

Daniel
23.03.2018
14:38:38

dimcha
23.03.2018
14:39:43
Судьба конечно, но я же спрашиваю человека, который им пользуется постоянно и сможет мне нехило время сэкономить...

Daniel
23.03.2018
14:39:43
но там есть https://godoc.org/github.com/powerman/structlog#Logger.Printf, для тех, кому проверять трудно

dimcha
23.03.2018
14:40:12
rtfm я и сам могу

Daniel
23.03.2018
14:43:52
выглядеть это будет примерно так, как ты попросил
без времени, правда
потому как время - это опязанность сборщика логов, а не писателя

dimcha
23.03.2018
14:46:28
у него есть в формате отображение времени и имени файла, с этим норм. Но меня интересует больше сколько кода придется изменить и как удобно будет его использовать, в отличие от привычного Printf
а так-же аппендеры. Можно-ли одновременно писать в файл, консоль и в сеть через кастомный аппендер