Рубрики
Uncategorized

Правила регистрации

Мы живем в мире, где клиенты хотят заявки, разработанные в невероятно короткое время. Мы, программное обеспечение … Теги от ведения журнала, дежопта, мониторинг, отладки.

Мы живем в мире, где клиенты хотят заявки, разработанные в невероятно короткое время. Мы, инженеры программного обеспечения, борьба (почти) каждый раз, когда встречали сроки, потому что мы хотим доставить лучшую работу, которую мы можем. Строгие сроки означают, что всегда есть риск того, что что-то оставлено позади: автоматические тесты, качество кода от приема ярлыков, документации, среди прочего, могут превратить проект в кошмар в долгосрочной перспективе.

Мы знаем о всех этих критических вещах, но есть определенный кусок любого приложения, который мы помним только, когда нам это нужно: журналы. да. Журналы — это все эти буквы, которые вы мучительно увидите в своем терминале, когда что-то пойдет не так, и у вас есть ваш босс, задавая каждые 5 минут, почему приложение все еще неисправно.

В моей карьере я узнал и поглотил набор правил для оптимизации регистрации моих приложений. Вы находите это раздражающее? Вы бы предпочли оставаться впадающим, пока рассвете снова, пытаясь понять, почему ваши пользователи получают ошибки, когда они хотят сделать что-то тривиальное? Заинтересованы? Затем пойдете со мной через W, которые составляют часть правил регистрации.

Что

Прежде чем мы начнем на этом, вы должны помнить только одну вещь: вы должны войти все! Каждый запрос. Мне все равно, если это получение, пост, поставленный, если бы он имел успех, если вернул некоторую ошибку проверки, мне все равно. Войдите все.

Вы только регистрируете ошибки? Извините, вы делаете это неправильно! Как вы знаете, когда конкретный пользователь сделал запрос? Как вы собираетесь создавать эти чудесные приборные панели, полные статистики с такими инструментами, как Кибана или Графана? Кроме того, конечно, еще одна вещь, которая отлично подходит для этих приборных панелей, состоит в том, чтобы войти в систему уровня журнала. Следует обязательно записывать, если эта запись журнала является информацией, предупреждение, ошибка, среди прочего.

Как правило, приложение Backend служит API (он может быть B2B, B2C, но это не имеет значения). Что важно, это то, что вы хотите знать, какую службу только что назвал пользователь, поэтому вы должны регистрировать имя конечной точки. И хотя это имя вполне специфично, всегда хорошая идея регистрировать также тип HTTP-метода конечной точки. Что изменилось? Был создан ресурс? Был восстановлен ресурс? Как много? Вы видите, что я имею в виду? Это данные, которые станут бесценным в какой-то момент в вашем проекте. Более того, как правило, это информация о том, что у вас есть в момент ответа, поэтому у вас нет никаких оправданий, чтобы не войти!

Бонусные баллы: идентификатор потока/запроса. Всегда приятно иметь это, когда вы должны отслеживать длинную работу, которая регистрирует множество деталей: как запросы или даже пользовательская информация, которая записывается одновременно, что приложение все еще получает другие запросы. Несколько строк разных запросов на ведение журнала могут быть перемешаны, и он может стать настоящим беспорядком, чтобы найти что-либо. Идентификатор запроса может предотвратить такую ситуацию, или она может быть быстро решена с простой поиском.

{‘dd’: [‘2019-04-06 17: 02: 30.414’, {‘b’: ‘Информация [REQ-000000086] [C.B.A.controller. Apicontroller] .getall,’}, ‘,.200.300.400,,,’, {‘b’: ‘Размер = 5.’}, ‘] [‘, {‘b’: ‘ExpartionResult = В ПОРЯДКЕ’}, ‘]’]}
{‘dd’: [‘2019-04-06 12: 10: 21.741’, {‘b’: ‘Информация [REQ-000000052] [C.B.A.controller. Apicontroller] .get,’}, ‘,.200.300.400,,,’, {‘b’: ‘recortiD = 1000.’}, ‘] [‘, {‘b’: ‘ExpartionResult = В ПОРЯДКЕ’}, ‘]’]}

Когда

Давайте сталкиваемся с этим: зная время ситуации в журнале является наиболее важным аспектом. Так что не будь дураком: если вы используете основу для вашего языка или регистрации, и это не значение по умолчанию, которое появляется в журнале, мой друг, вам лучше начать Googling для альтернатив.

Типичный формат, который мы ищем, представляет собой читаемое человеком отметку: ГГГГ-ММ-ДД HH: MM: SS.SSS. Если вам нужно, вы должны идти вниз на миллисекундную точность. Кроме того, конечно, обратите внимание на эту вещь, которая преследует вас во сне: вы должны быть осторожны с TimeZones!

Мы живем в мире, где каждый второй счет. В 2000 году было приемлемо ждать 10 секунд, чтобы открыть веб-страницу, но теперь, если требуется более 1 секунды, пользователь собирается закрыть эту страницу. Итак, вы уже догадаетесь, что я собираюсь сказать: время исполнения. Каждый запрос должен регистрировать соответствующее время отклика. Кроме того, да, это хороший для этого фантазии на ваших панелях!

2019-04-06 17: 02: 03.375
Информация [REQ-000000083] [C.B.A.controller. Apicontroller] .Edit ,,. 200.300.400 ,,
Время исполнения = 127.
]]

ВОЗ

Каждый аспект, о котором мы говорили до сих пор, не являются необходимыми, но он может стать неактуальным, если вы не знаете, кто сделал конкретную операцию в вашем приложении.

Обычно у вас есть система аутентификации для вашего приложения. Это не имеет значения, если это API отдыха с токеном предъявителя или основным аутером, или если это веб-приложение с KeyCloak, Ciemge или AWS Cognito. Когда запрос входит в вашу конечную точку, вы должны иметь доступ к идентификатору пользователя, который сделал его, и в этот момент вы должны войти в систему этого идентификатора. Если у вас есть конечные точки, которые позволяют неаутентифицированные запросы, то вам следует войти в систему.

Если у вас нет системы аутентификации, вы можете сделать другой подход и выбрать печатать IP, который сделал запрос. Это не самый надежный идентификатор (пользователь может быть подключен к сети, которая поддерживает сто пользователей, но есть статический IP, например), но он лучше, чем не иметь никакого ключа о том, кто сделал конкретный запрос. Кроме того, одно очевидно: если безопасность является основной проблемой вашей заявки, независимо от регистрации IP всегда важно, есть ли у вас система аутентификации или нет.

2019-04-07 08: 18: 04.293 Информация [REQ-000000016] [C.B.A.controller. APICONTROLLER]. Create ,,
IPaddress = 100.200.300.400,

Почему

Ну, это очевидно с самого начала. Только если журнал вашего приложения выключен, не будут напечатаны ошибки в вашем журнале. Итак, это просто: Клиенту, мы всегда возвращаем красивое сообщение. В журнале мы должны распечатать каждую неприятную маленькую вещь, которая вызвала ошибку. Даже тот, который даст кошмары, потому что эта маленькая ошибка — твоя вина!

Но не все вращается вокруг ошибок. На мой взгляд, вам не нужно распечатать все ошибки проверки, которые вы отправляете пользователю, но есть некоторые, которые вам должны войти. Например, есть тривиальный: пытается получить доступ к ресурсу, который не существует. Пользователь собирается получить 404 HTTP-код, и журнал должен отражать это. Если вы используете какой-то инструмент, который идентифицирует те виды ошибок в журнале, вы можете поднять предупреждения на основе количества этих событий.

{‘dd’: [‘2019-04-07 08: 24: 26.138 Warn [REQ-000000040] [C.B.A.E. ExceptionandlingControllerAdvice] .get ,,. 200.300.400 ,,,’, {‘b’: ‘[expartionresult = not_found] Ресурс не найден: 123456789’}]}
{‘dd’: [‘2019-04-07 09: 47: 13.263 Warn [REQ-000000055] [C.B.A.E. ExceptionandlingControllerAdvice]. Create ,,. 200.300.400 ,,]’, {‘b’: ‘[ОперацияResult = конфликт] Выбранные даты уже зарезервированы’}]}

Где

В этом финальном разделе я хочу упомянуть две вещи, которые могут стать удобными в определенных ситуациях. Если ваше приложение является API, который обслуживает приложение Frontend, я уверен, что есть ценная информация о браузере, которая сделала запрос. Мы все знаем, что дело с капюшом браузеров, которые существуют в наши дни, это кошмар. Помогите, чтобы нуждающийся разработчик предсказания с этим.

Этот следующий не легко реализуется, но я считаю, что некоторые приложения должны регистрировать это: геолокация запроса. У вас есть много API, чтобы узнать местоположение IP, но вызывая API, чтобы добавить информацию в журнал немного дорого.

Вывод

Если вы прочитаете все, и ваш журнал имеет всю информацию, вы суперзвезда. Если у вас есть некоторые, я честно верю, что это хорошее начало, и это знак, который вы заботитесь о вашем проекте! Я настоятельно рекомендую выделить некоторое время, чтобы улучшить это в вашем приложении. Как мы только что видели, это так важно! Если у вас нет ничего, кроме информации по умолчанию, у вас есть много работы, поэтому поторопись перед пользователем или вашим клиентом поднимает вопрос о том, как вы не будете знать, как ответить!

В моих командах лесозаготовка — это всегда важная забота, и одна из первых вещей, когда мы загрузим приложение. Значение значимой и структурированной архитектуры ведения журнала неизмеримо, поскольку помогает нам решить любую проблему быстрее и эффективнее. Без журналов ваша команда может быть застревана, пытаясь объяснить, почему ваша заявка ведет себя неожиданно, или он может занять несколько часов, чтобы ответить на простой запрос клиента по поводу ошибки.

Я надеюсь, что эта статья убедила вас о важности правильной регистрации в ваших приложениях. Итак, поверьте мне, когда дело доходит до регистрации, всегда есть комната для улучшения. Это бесконечная задача. Так что ты ждешь?

Бонус: Вы можете найти здесь Пример для logback.xml (Hello Java и Spring пользователей), который имеет такую же структуру примеров.

Оригинал: «https://dev.to/voliveira89/the-rules-of-logging-3gam»