Согласованные журналы консоли в Angular

Когда вам нужно войти, делайте это постоянно.

Ведение журнала необходимо. Это позволяет нам отлаживать как в разработке, так и в производстве. Но console по умолчанию запрещен tslint. И не зря. Консольное ведение журнала - это большую часть времени беспорядок. Если вы можете просто волей-неволей console.log(whatever), тогда ваши журналы практически бесполезны.

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

Мне приходилось сталкиваться с этой проблемой в нескольких проектах, и я написал класс статического регистратора на Angular, который позволяет нам контролировать, что и где мы регистрируем.

Вот суть https://gist.github.com/jkyoutsey/e99336d58c2c83bc0ba03cde78fcc64e

Вкратце у вас есть следующие возможности:

Logger.(debug|info|warn|error|devOnly|techDebt)(module: string, method: string, message?: any)

debug|info|warn|error будет регистрироваться во всех средах, если вы также не установите для необязательного аргумента devOnly: boolean значение true. Тогда module и method по-прежнему будут регистрироваться, но не аргумент message. Это позволяет отслеживать без утечки конфиденциальных данных в производственной среде.

devOnly|techDebt не имеют необязательного аргумента devOnly и будут входить в консоль только в непроизводственной среде.

Под окружающей средой я подразумеваю значение вашего src/environments/environment.ts production свойства. Если это неверно, вы получите все записи журнала. Если это правда, вы получите только debug|info|warn|error.

Теперь ваш вывод будет последовательно отформатирован, что упростит чтение, синтаксический анализ и даже анализ.

Приведенные выше команды приводят к следующему выводу в Chrome DevTools:

Я даже создал фрагмент кода VisualStudio, чтобы упростить задачу:

И для этого у меня есть модульные тесты, поэтому они не повлияют на ваше покрытие (но не стоит слишком беспокоиться о покрытии): https://gist.github.com/jkyoutsey/01e3e2db4ba9a570245bd63d543960e1

Если вы найдете это полезным или интересным, пожалуйста, аплодируйте!

EnterpriseNG выходит 4 и 5 ноября 2021 года.

Приходите послушать ведущих спикеров сообщества, экспертов, лидеров и команду Angular, которые в течение двух дней обсудят все, что вам нужно, чтобы максимально использовать Angular в ваших корпоративных приложениях.
Темы будут сосредоточены на следующих четырех областях:
• Monorepos
• Микро-интерфейсы
• Производительность и масштабируемость
• Удобство обслуживания и качество
Подробнее здесь ›› https://enterprise.ng-conf.org/