e22m4u 8 месяцев назад
Родитель
Сommit
3bc3c5cf0d
1 измененных файлов с 75 добавлено и 1 удалено
  1. 75 1
      README.md

+ 75 - 1
README.md

@@ -22,7 +22,7 @@ import {createDebugger} from '@e22m4u/js-debug';
 const {createDebugger} = require('@e22m4u/js-debug');
 ```
 
-## Примеры
+## Использование
 
 Интерполяция строк (см. спецификаторы [@e22m4u/js-format](https://www.npmjs.com/package/@e22m4u/js-format)).
 
@@ -194,6 +194,80 @@ debugWo1(contact, 'Participant contacts found:');
 // myApp:myService:o3pk   }
 ```
 
+## Управление выводом
+
+По умолчанию вызовы функции `debug` ничего не выводят. Чтобы увидеть отладочные
+сообщения, необходимо указать, какие именно пространства имен вас интересуют.
+Это делается с помощью специального паттерна (шаблона). Механизм включения
+зависит от среды выполнения.
+
+### Node.js: Переменная окружения `DEBUG`
+
+В среде Node.js используется переменная окружения DEBUG. Вы можете установить
+её при запуске вашего скрипта.
+
+```bash
+# включить конкретное пространство имен
+DEBUG=myApp node your_script.js
+
+# включить все пространства имен, начинающиеся с 'myApp:'
+DEBUG=myApp:* node your_script.js
+
+# включить несколько пространств имен через запятую
+DEBUG=myApp:service,lib:utils node your_script.js
+# если используете пробелы, нужны кавычки
+DEBUG="myApp:service lib:utils" node your_script.js
+
+# включить ВСЕ пространства имен
+DEBUG=* node your_script.js
+```
+
+### Браузер: localStorage.debug
+
+В веб-браузерах для управления выводом используется ключ debug в localStorage.
+Вы можете установить его значение через консоль разработчика.
+
+```js
+// включить конкретное пространство имен
+localStorage.debug = 'myApp';
+
+// включить все пространства имен, начинающиеся с 'myApp:'
+localStorage.debug = 'myApp:*';
+
+// включить несколько (через запятую или пробел)
+localStorage.debug = 'myApp:service,lib:utils';
+// или
+localStorage.debug = 'myApp:service lib:utils';
+
+// включить ВСЕ
+localStorage.debug = '*';
+
+// отключить вывод
+localStorage.removeItem('debug');
+// или
+localStorage.debug = '';
+```
+
+*i. После изменения `localStorage.debug` обычно требуется перезагрузить
+страницу, чтобы изменения вступили в силу.*
+
+### Синтаксис паттернов
+
+- Точное совпадение (например, `myApp:myService`);
+- Wildcard (\*): `myApp*` соответствует `myApp`, `myApp:myService` и т.д.;
+- Несколько паттернов можно указать разделив из запятой или пробелом;
+- Включить всё: `*` включает вывод для всех пространств имен;
+
+Примеры шаблонов в окружении Node.js:
+
+```bash
+node main.js # ничего не выведет
+DEBUG=* node main.js # выведет все сообщения
+DEBUG=app node main.js # только пространство имен app
+DEBUG=app:* node main.js # пространства имен с префиксом app:
+DEBUG=app:worker,legacy node main.js # только app:worker и legacy
+```
+
 ## Тесты
 
 ```bash