Тёмный

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

AvitoTech
Подписаться 27 тыс.
Просмотров 6 тыс.
50% 1

Опубликовано:

 

11 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 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 месяцев назад
Привет, не совсем так. Одна функция на ключ, а не на файл )
Далее
GENIUS FOOD HACKS 🍰 #shorts
00:36
Просмотров 7 млн
НАШЛА ДЕНЬГИ🙀@VERONIKAborsch
00:38
Просмотров 902 тыс.
КОТЁНОК ЗАСТРЯЛ В КОПИЛКЕ#cat
00:37
Why #Go Interfaces? / #Golang Interfaces Tutorial
9:41
Go Structured Logging with the slog Package (Golang)
37:23
GENIUS FOOD HACKS 🍰 #shorts
00:36
Просмотров 7 млн