2013-05-11 2 views
7

Мой код JS обычно заполнен сообщениями console.log(). Иногда лучше отключить их или отключить часть их.Управление отладочными сообщениями Console.log

Я могу, например, обернуть console.log() заявление в некоторой функции с условиями, которые определяются некоторыми константами. Это лучший способ управлять отладочной продукцией или более элегантными альтернативами?

ответ

4

Обтекание console.log в функции хорошо работает. Но обратите внимание, что для javascript также есть много утилит регистрации. Немного google на «js logger» может дать подходящие результаты.

+0

С благодарностью оцените! Уже нашли кое-что! :) – zavg

2

JS logger - неплохой и легкий инструмент с плавными настройками для уровней сообщений журнала и несколькими предопределенными уровнями ведения журнала (DEBUG, INFO, WARN, ERROR).

5

Bunyan модуль регистрации популярен для Node.js

Пример кода hi.js:

var bunyan = require('bunyan'); 
var log = bunyan.createLogger({name: 'myapp'}); 
log.info('hi'); 
log.warn({lang: 'fr'}, 'au revoir'); 

Выход:

{"name":"myapp","hostname":"localhost","pid":40161,"level":30,"msg":"hi","time":"2013-01- 04T18:46:23.851Z","v":0} 
{"name":"myapp","hostname":"localhost","pid":40161,"level":40,"lang":"fr","msg":"au revoir","time":"2013-01-04T18:46:23.853Z","v":0} 

Вы можете фильтровать из командной строки:

$ node hi.js | bunyan -l warn 
[2013-01-04T19:08:37.182Z] WARN: myapp/40353 on localhost: au revoir (lang=fr) 
3

Если вы используете Node.js, то debug чрезвычайно эффективен как альтернатива console.log()

Это в основном заменяет console.log() за исключением того, вы можете включить его в командной строке с DEBUG переменная среды, основанная на том, как вы ее инициализировали в каждом файле.

Скажем, у меня есть проект с парой файлов ссылочного из моего index.js файла:

one.js

var debug = require('debug')('one-one'); 

var func = function() { 
    debug('func'); 
} 

two.js

var debug = require('debug')('one-two'); 

var func = function() { 
    debug('func'); 
} 

Вы имеете инициализированная отладка с именем «один-один» в первом файле и «один-два» во втором файле.

В командной строке я могу запустить их так:

node index.js 

Результат: нет отладочный вывод. Однако, если я бегу это так:

DEBUG=* node index.js 

Оба эти отладочные операторы будут записаны, однако, в различных цветах и ​​с именем отладки (один-один или один-два), так что я могу сказать, какой из которого они пришли.

Теперь предположим, что вы хотите сузить его немного больше. Вы можете запустить:

DEBUG = * - указатель на два узла.JS

Чтобы получить только вывод отладки, который был установлен с "-два" в конце имени или

DEBUG = одно- * узел index.js

к получить все, начиная с «one-»

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

DEBUG = один *, обезьяна *, - обезьяна: банан, -elephant, -chimp: * узел index.js

Этом будет включать в себя все, начиная с «один» или «обезьяна» и исключить что-нибудь под названием «обезьяна: банан», или «слон» или, начиная с «шимпанзе:»

Если вы хотите, чтобы исключить все, кроме то:

DEBUG = *, - patter n1, -pattern2 node index.js