НЕмитап Golang#1 Алексей Мичурин - Логирование как в Авито: go + slog

  Рет қаралды 6,493

AvitoTech

AvitoTech

Күн бұрын

Пікірлер: 24
@timur-yusipov
@timur-yusipov 6 ай бұрын
Интересно, спасибо)
@ffff00-korj
@ffff00-korj 3 ай бұрын
Спасибо, интересно как все последовательно приходят к подходу, когда ошибки нужно врапать)
@MichurinTube
@MichurinTube 3 ай бұрын
Согласен. Но, кажется, к врапанью надо было как-то специально идти лет 7 назад. Сейчас, когда есть %w и вкусняшки типа As, Is и даже errors.Join, - сам язык и стандартная библиотека тебя толкает к врапанью.
@satisataka3437
@satisataka3437 6 ай бұрын
Спасибо, очень полезно!
@wat4mon
@wat4mon 6 ай бұрын
крутой доклад, респект, больше такого контента
@AvitoTech
@AvitoTech 5 ай бұрын
00:00 | Заставка 05:50 | Вступление 06:50 | Как выглядели логи раньше, и что сейчас 08:18 | Go 1.21: log/slog 09:35 | Пример 1: используем slog 11:19 | Пример 2: структурированные логи 13:46 | Пример 3: дидактический 20:12 | Пример 4: развиваем интерфейс 22:21 | Пример 5: перемены в логировании 23:40 | Пример 6: совершенствуем идею 25:38 | Пример 7: ошибка при отправке sms 31:36 | Пример 8: кастомная ошибка 44:31 | Вопрос от зрителей: нормально ли писать в логи номера телефонов? 46:40 | Финал и ответы на вопросы в чате
@qoonmax
@qoonmax Ай бұрын
Отличный материал
@victorm7551
@victorm7551 6 ай бұрын
спасибо, было интересно
@zenderfufikoff
@zenderfufikoff 6 ай бұрын
думаю userId это всё же второстепенный аргумент. Первостепенным должен быть traceId. А так живенько, полезно. Спасибо.
@MichurinTube
@MichurinTube 5 ай бұрын
TraceId точно надо добавлять, если он есть. Но главное, иметь в логах информацию, которую сообщают пользователи/тестировщики.
@daniil-pershin
@daniil-pershin 6 ай бұрын
Видео огонь, спасибо Алексей, поделитесь, пожалуйста, своим конфигом для vim 🙏
@brothers_karamazovs
@brothers_karamazovs 5 ай бұрын
Отличный доклад, спасибо!
@Денис-в1я6к
@Денис-в1я6к 5 ай бұрын
Прикольно смотреть, как меняется подходы к разработке. Ранее вот эти примеры использовались, чтоб на собеседовании спрашивать какие SOLID принципы здесь нарушаются. Очень много вопросов возникает после просмотра, жаль не удалось посмотреть в прямом эфире. - Почему логгер(интерфейсный слой) знает о какой-то бизнес логике? Если проблема лишь в том что какой-то программист захочет назвать поле по другому, что мешает этому программисту создать другую структуру данных? П.С. Из ваших слов в авито вы прокидываете мапу, тогда не понятно зачем пример с структурами... - Зачем засорять контекст данными? Я думаю вытекающие проблемы понятны - Почему выбрали именно slog? Честно ожидал что будет как "Jaeger для трассировки в микросервисной архитектуре", а вышла на аудиторию, которая только начинает работать с golang
@nikolays2490
@nikolays2490 5 ай бұрын
Леша мой герой!)
@Александр-б6с3ъ
@Александр-б6с3ъ 5 ай бұрын
Зачем 15 минут заставок?
@fresonn
@fresonn 7 күн бұрын
Из 7-го глупого примера! В самом верху логировать ошибку, чтобы не забыть залогировать ошибку, вообще-то ошибки еще нужно обрабатывать и в какую архитектуру это влезет(имею в виду все эти 100500 враперов)?
@hopeuesimsure6766
@hopeuesimsure6766 6 ай бұрын
cfbr
@AntonZelinsky
@AntonZelinsky 5 ай бұрын
Не возникает делима где логировать 27:05 ошибку, она всегда должна логироваться, она должна логироваться там где происходит. Это бред какой-то логировать её где-то на нижних уровнях. Представь, что ты используешь стороннюю библиотеку и она вместо того чтобы залогировать какую-то ошибку в себе, прокалывание её наверх, чтобы ты сам решал логировать её или нет. Такого я ни разу не видел в жизни. Да и логируется всегда весь контекс и стектрейс, который есть только в месте возникновения ошибки. Я посмотрел лекцию до конца и видел вариант с добавлением в специально созданную структуру контекста, но это лютая дичь! Вернёмся к моему другому примеру с 5000 логов, тебе нужно будет сделать 5000 обвёрток и чуть меньше структур для прокидывания контекста наверх? А сколько принципов программирования и проектирования это нарушает? +-10 штук. А если у тебя часть кода будет лежать в одном модуле, а часть в другом, нужно будет в вызывающем модуле всё логировать? А если его начнут использовать ещё кто-то? Да и бред про устоявшуюся команду меня паразил. А что если ваш сторожила уволится? Да и возвращать ошибку на каждом уровне это ещё тот спагетти. Уже давно выработан подход к обработке ошибок, почитайте книгу Чистый код, главу про обработку ошибок, когда возникает ошибка, она сразу логируется и возвращается исключение, которое перехватывается где-то на верхнем уровне. Да, в го нет исключений, но есть паники, которыми можно реализовать тот же самый подход. Такой бы код (даже с учётом примеров) у меня никогда бы не прошёл ревью. В общем, лекция хорошая для новичков, кто вообще не знает о структурировании легировании, но для опытных она будет бесполезной.
@sergeykosovsky7005
@sergeykosovsky7005 5 ай бұрын
паниками реализовывать исключение - ты чего)) это очень дорого, поэтому бессмысленно
@rostislavteryaev3894
@rostislavteryaev3894 2 ай бұрын
жесть. Люди которые исключения в го делают с использованием паник кого-то ревьюят)
@oxidant5
@oxidant5 2 ай бұрын
Представь, что ты используешь стороннюю библиотеку и она вместо того чтобы прокинуть ошибку наверх, чтобы ты сам решал логировать её или нет, логирует её в себе. Такого я ни разу не видел в жизни.
@fresonn
@fresonn 7 күн бұрын
Написано хорошо, со всем согласен, кроме паник.
@AntonZelinsky
@AntonZelinsky 5 ай бұрын
Смешно говорит, что код безупречен, а в нём десяток функций которые просто логируют. Так, если в приложении будет 10000 файлов и 5000 комментариев, нужно будет сделать 5000 функций обвёрток для лога?
@MichurinTube
@MichurinTube 5 ай бұрын
Привет, не совсем так. Одна функция на ключ, а не на файл )
小丑家的感情危机!#小丑#天使#家庭
00:15
家庭搞笑日记
Рет қаралды 26 МЛН
Миллионер | 1 - серия
34:31
Million Show
Рет қаралды 2,5 МЛН
She's very CREATIVE💡💦 #camping #survival #bushcraft #outdoors #lifehack
00:26
Стойкость Фёдора поразила всех!
00:58
МИНУС БАЛЛ
Рет қаралды 7 МЛН
7 Лет Опыта в IT | Что я Понял?
19:56
Vlad Mishustin
Рет қаралды 183 М.
Go Structured Logging with the slog Package (Golang)
37:23
Better Stack
Рет қаралды 6 М.
Как на самом деле устроены каналы в Golang? | Golang channels internals
41:31
Основы информатики и вычислительной техники. Школьный компьютер (1989)
29:28
Советские фильмы, спектакли и телепередачи
Рет қаралды 36 М.
小丑家的感情危机!#小丑#天使#家庭
00:15
家庭搞笑日记
Рет қаралды 26 МЛН