Рубрики
Uncategorized

Помочь вашему будущему себя: голые потребности для всех линий журнала

Контекст это все Это вторая статья в моей «поможет вашей будущей серии« Само »о том, как сделать … Теги с DevOps, Opensource, облаком, Showdev.

Контекст это все

Это вторая статья в моей «поможет вашей будущей серии« Само »о том, как хорошо вести себя хорошо. Проверьте первую статью здесь: https://bit.ly/3bkeywg

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

Timestamp

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

Формат даты/времени

Там есть тонна даты/времени, но вы, вероятно, должны просто использовать RFC 3339. Если вы не знакомы с RFC 3339, и вы думаете, что не так с добрыми добрыми добрыми iso 8601, понизите ручку фонтана. Там нет необходимости составить официальное письмо протеста. RFC 3339 — это просто профиль ISO 8601, который делает несколько решений о вещах, которые ISO 8601 листья в качестве доступных альтернатив. Он считается стандартным форматом даты/времени интернет-протоколов, и хотя вы, вероятно, не пишете один из них, вы все равно можете воспользоваться проблемами взаимодействия, которые она решает.

Если RFC 3339 или другой профиль ISO 8601 не делает этого для вас, там много других форматов. Тем не менее, попробуйте убедиться, что у вас есть, имеет хотя бы следующие свойства:

Отформатированная дата/временные струны Сортировать хронологически Информация о часовом поясе включена

Часовой пояс

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

Гранулярность

Другая проблема, которую вы можете столкнуться, возникает, когда гранулярность вашего временного времени слишком грубается. В идеале нет двух сообщений журнала не должны делиться временем (по крайней мере, не из того же источника журнала). Если они это сделают, инструменты, которые сортируют сообщения журнала, в соответствии с временем, могут нарисовать запутанную картину, представив события в другом порядке, чем в котором они произошли. Чтобы избежать этого, вы можете либо убедиться, что ваш Timestamp включает в себя достаточно высокоточную дробную секунду или добавить номер последовательности в каждое сообщение журнала.

Уровень журнала

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

Fatal/Panic/Critical/чрезвычайно — тяжелое событие, очень вероятно, указывая на провал значительного компонента или даже всего приложения

Ошибка — Уровень приложений или событие уровня системы, не достаточно серьезное, чтобы препятствовать продолжающемуся приложению или системной функции Warn/предупреждение — приведенное предупреждение, что, в то время как не в себе условие отказа, может указывать на разлагаемое условие применения или может указывать на состояние отказа. Учитывая уведомление о соревнованиях соревнования — значительное событие, которое может потребовать особого внимания или вмешательства

Info — нормальное событие, достаточно заметное, чтобы сохранить прочную запись о произошедших

Debug — событие или деталь, касающиеся события, которое полезно для расследования правильности или выполнения некоторой части приложения и, как правило, не требуется для понимания того, что произошло при нормальной работе трассировки приложений — аналогично отладке, но обычно с большой Более деталь и/или более высокая детализация и/или частота

Вышеуровневые уровни упорядочены для облегчения фильтрации либо при производительности события журнала, либо при употреблении события журнала (I.E. »- только покажет мне предупреждения или хуже»), но это может быть не измерение, которое вы заботитесь о. Иногда конкретная ошибка может быть важнее для вас, чем компонентной паники. Если вы используете какую-то структуру ведения журнала для контроля, будь то сообщения журнала в или за пределами определенного порога, вытекаете очень пристальное внимание как к порогу, так и на уровне каждого конкретного сообщения. Вы не хотите пропустить серьезную проблему, случайно бросая его журнал в пустоту.

Категория/Компонент

Наиболее распространенное выражение категории журнала находится в экосистеме Java. В типичном приложении Java с использованием log4j, например, сообщения журналов будут префиксированы либо с полностью квалифицированным или произвольно усеченным именем класса (например, com.wrable.logging. Регистратор или регистрация. Регистратор). Особенно в большой системе это позволяет регистрировать потребителей, чтобы сузить сосредоточенность на одном или нескольким конкретным компонентам, которые они работают, не перегруженные шумом полной системы. Используя иерархическую категорию, такую как имя класса, может облегчить набрать на правильном уровне гранулярности, от отладочных журналов очень специфических компонентов ко всему от целых пакетов.

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

Источник

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

2021-04-30T12: 34: 56.789Z — — приложение запущено

Если у вас нет уникального идентификатора, другие варианты могут быть удаленным IP-адресом или, возможно, идентификатор сеанса. Избегайте чувствительных данных, таких как имя, адрес электронной почты и т. Д. (Подробнее об этом в будущем пост на конфиденциальности). Кроме того, не смешивайте и совпадают на идентификаторах — если у вас есть два допустимых способа идентификации одного и того же источника журнала (скажем, идентификатор пользователя и имя пользователя), выберите его и придерживаться его. Не заставляйте потребителей журнала, чтобы прочитать один, запросить другой и создайте запрос поиска журнала, который возвращает все события, соответствующие оба идентификаторам.

Событие

Это должно пойти, не говоря, но не забудьте войти в систему самого сообщения журнала.

Упаковка

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

Оригинал: «https://dev.to/caseywrble/help-your-future-self-bare-necessities-for-all-log-lines-1peh»