Angular консольный журнал только в среде разработки

В нашем Angular приложении (с Angular CLI) мы используем несколько операторов console. Существует ли глобальный способ обнаружения среды, а затем отображать console.log в наших компонентах и ​​услугах только при разработке?

Что я имею в виду под глобальным путем - я знаю, что мы можем использовать что-то вроде:

if (!environment.production) {
  console.log(this.reviewTasksList);
}

Но используя этот код каждый раз, когда мы должны console.log (вместе с необходимым импортом для получения переменной environment), наш код станет своеобразным подробным.

Я хочу знать, есть ли способ:

  • быстрее получить доступ к среде.
  • Возможно, удалите все журналы консоли во время сборки prod.

Или лучшее решение здесь - создать службу регистрации и выполнить всю проверку среды внутри нее?

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

Ответ 1

Вы можете использовать isDevMode() или ваш environment.production чтобы проверить, работает ли код в режиме разработки или в производственном режиме.

Я думаю, что служба регистрации будет хорошей идеей, а затем зарегистрирует другую службу регистрации в поставщиках в зависимости от режима.

Смотрите также https://github.com/angular/angular/pull/14308

Ответ 2

В качестве альтернативы вы можете использовать общий сервис для достижения этого

this.loggerService.log(this.reviewTasksList);

где, как и в вашем сервисе, вы можете использовать

log(text: string){
     if (!environment.production) {
       console.log(text)
     }
}

Ответ 3

Это перезаписывает все журналы консоли с пустой функцией.

if (environment.production) {
  enableProdMode();
  window.console.log = function () { };   // disable any console.log debugging statements in production mode
  // window.console.error = function () { };

}

Ответ 4

что, если вы переопределите console.log, если он не в режиме dev?

 if (! isDevMode()){
   console.log = (...args)=>{}
 }

Ответ 5

Я создал решение, которое может иметь различные настройки для управления журналами консоли в зависимости от среды, в которой вы запускаете приложение. Вы можете определить настройку по вашему выбору в среде разработки и другую настройку для продакшен среды. установить @sedeh/smart-service и в свой компонент приложения внедрить SmartConsoleService и передать в него свои настройки. остальное все сделано для вас. Любой консольный журнал будет обрабатываться в соответствии с вашей спецификацией. Оформить заказ Smart-console и сообщить мне, есть ли что-то еще, что нужно включить в него.