Логгер — это не про скорость: что действительно важно в дизайне
Когда логирование попадает в реальную систему, довольно быстро становится понятно, что это не про API и не про удобство вызова. Это про постоянный компромисс. С одной стороны, хочется, чтобы система работала максимально быстро: любое логирование — это накладные ...
Когда логирование попадает в реальную систему, довольно быстро становится понятно, что это не про API и не про удобство вызова. Это про постоянный компромисс. С одной стороны, хочется, чтобы система работала максимально быстро: любое логирование — это накладные расходы, и в нормальном режиме его стараются минимизировать. С другой стороны, как только возникает проблема, внезапно оказывается, что либо логов недостаточно, либо они есть, но в таком виде, что восстановить картину происходящего невозможно. В этот момент становится очевидно, что задача логгера — не просто «писать строки» максимально быстро, а помогать удерживать баланс между производительностью и диагностируемостью.Первая проблема, которая всплывает практически сразу, связана не со скоростью, а со структурой. Лог начинает отражать структуру кода, а не структуру происходящего. Есть бизнес‑логика, есть библиотеки, есть множество параллельных операций, и каждая из них пишет что‑то своё. В итоге лог превращается в поток сообщений, где перемешаны разные задачи, и вместо «обработки конкретного запроса» мы видим просто последовательность вызовов. На небольшом проекте это ещё можно терпеть, но в серверной системе такая картина быстро становится непригодной для анализа.Естественное желание — привязать лог не к месту вызова, а к самой задаче. Самый прямой путь — передавать контекст через параметры (например, инстанс логгера), но довольно быстро это начинает протекать через весь код и превращается в обязательный шум в сигнатурах. Гораздо более устойчивый подход — привязать контекст к потоку выполнения. В библиотеке logme это делается через thread channel:
Связанные теги
Компании и люди
Линия сюжета
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
[Перевод] Ты не можешь построить жизнеспособную дизайн-систему на Tailwind — Часть 1
Tailwind отлично работает для быстрого прототипирования, но становится проблемой когда проект растёт. Разбираю три подхода к построению дизайн-системы на Tailwind — CVA, CSS-пер...
[Перевод] Присяжные решили: Meta* и Google нанесли вред ребенку. Что дальше?
Почему радикальные меры вроде возрастных цензов и отмены «Раздела 230» не сделают соцсети безопаснее.От переводчика: ниже выжимка из этого длинного подкаста. Главные мысли и инс...
«Олег, разверни тестовую базу»: как таска на 5 минут сорвала финтех-релиз и поссорила три отдела
Все началось с обычного тикета в Jira, из тех, которые выглядят безобидно и даже немного скучно. «Нужно протестировать новый личный кабинет. Разверни тестовую базу». Через неско...
Из Excel в BI и/или Р7 офис без боли: ускоряем миграцию дата-проектов (разбираем Power Query)
Всем привет. Да мы снова про Excel и да мы уверены что более совершенного инструмента для первичной обработки информации нет ( и возможно не будет). Мы не ставим себе цель убеди...
Обзор импортозамещённого ноутбука KVADRA LE14U
Всем привет! Меня зовут Александр Васильцов, я руковожу отделом развития инфраструктуры в R-Style Softlab — дочерней компании РСХБ. В рамках своей работы я занимаюсь тестировани...
TypeScript врёт — а вы об этом не знаете. Валидация ответов сервера
Недавно я обнаружил, что далеко не все знают об одной простой вещи — и это меня удивило.Многие думают примерно так: «я описал интерфейс, указал что GET /users возвращает User[],...
Рекламный слот
Встроенный блок в статье
Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
[Перевод] Ты не можешь построить жизнеспособную дизайн-систему на Tailwind — Часть 1
Tailwind отлично работает для быстрого прототипирования, но становится проблемой когда проект растёт. Разбираю три подхода к построению дизайн-системы на Tailwind — CVA, CSS-пер...
[Перевод] Присяжные решили: Meta* и Google нанесли вред ребенку. Что дальше?
Почему радикальные меры вроде возрастных цензов и отмены «Раздела 230» не сделают соцсети безопаснее.От переводчика: ниже выжимка из этого длинного подкаста. Главные мысли и инс...
«Олег, разверни тестовую базу»: как таска на 5 минут сорвала финтех-релиз и поссорила три отдела
Все началось с обычного тикета в Jira, из тех, которые выглядят безобидно и даже немного скучно. «Нужно протестировать новый личный кабинет. Разверни тестовую базу». Через неско...
Из Excel в BI и/или Р7 офис без боли: ускоряем миграцию дата-проектов (разбираем Power Query)
Всем привет. Да мы снова про Excel и да мы уверены что более совершенного инструмента для первичной обработки информации нет ( и возможно не будет). Мы не ставим себе цель убеди...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
[Перевод] Ты не можешь построить жизнеспособную дизайн-систему на Tailwind — Часть 1
Tailwind отлично работает для быстрого прототипирования, но становится проблемой когда проект растёт. Разбираю три подхода к построению дизайн-системы на Tailwind — CVA, CSS-пер...
[Перевод] Присяжные решили: Meta* и Google нанесли вред ребенку. Что дальше?
Почему радикальные меры вроде возрастных цензов и отмены «Раздела 230» не сделают соцсети безопаснее.От переводчика: ниже выжимка из этого длинного подкаста. Главные мысли и инс...
«Олег, разверни тестовую базу»: как таска на 5 минут сорвала финтех-релиз и поссорила три отдела
Все началось с обычного тикета в Jira, из тех, которые выглядят безобидно и даже немного скучно. «Нужно протестировать новый личный кабинет. Разверни тестовую базу». Через неско...
Из Excel в BI и/или Р7 офис без боли: ускоряем миграцию дата-проектов (разбираем Power Query)
Всем привет. Да мы снова про Excel и да мы уверены что более совершенного инструмента для первичной обработки информации нет ( и возможно не будет). Мы не ставим себе цель убеди...