2013-05-11 15 views
7

Mój kod JS jest zwykle pełen komunikatów debugujących console.log(). Czasami lepiej je wyłączyć lub wyłączyć jakąś ich część.Komunikaty debugowania Console.log zarządzające

Potrafię na przykład opakować instrukcję console.log() w niektórych funkcjach w warunkach określonych przez niektóre stałe. Czy jest to najlepszy sposób na zarządzanie wynikami debugowania lub czy są bardziej eleganckie alternatywy?

Odpowiedz

4

Zawijanie console.log do funkcji działa dobrze. Ale zauważ, że istnieje wiele narzędzi do logowania dla javascript. Trochę google na "js logger" może przynieść odpowiednie wyniki.

+0

Z wdzięcznością doceniamy! Już znalazłeś kilka rzeczy! :) – zavg

2

JS logger to całkiem dobre i lekkie narzędzie z flixible ustawieniami poziomów komunikatów logowania i kilkoma predefiniowanymi poziomami logowania (DEBUG, INFO, WARN, ERROR).

5

Bunyan moduł rejestrowania jest popularny node.js

Przykład kodu hi.js:

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

wyjściowa:

{"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} 

Można następnie filtrowany z linii komend:

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

Jeśli używasz node.js następnie debug jest bardzo skuteczny jako alternatywa dla console.log()

Jest to w zasadzie zastępuje console.log() z wyjątkiem można włączyć ją w wierszu polecenia z DEBUG zmienna środowiskowa w zależności od sposobu zainicjowania jej w każdym pliku.

Powiedzmy Mam projektu z kilku plików odwołanie od mojego index.js pliku:

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'); 
} 

Masz zainicjalizował debugowanie z nazwą "jeden-jeden" w pierwszym pliku i "jeden-dwa" w drugim pliku.

W wierszu polecenia można uruchomić je tak:

node index.js 

Wynik: Brak wyjścia debugowania. Jednakże, jeśli uruchomię go tak:

DEBUG=* node index.js 

Obydwa oświadczenia debug dostanie napisano jednak, w różnych kolorach i nazwą debugowania (jeden-jeden lub jeden-dwa), więc mogę powiedzieć, który plik, z którego pochodzą.

Teraz powiedzmy, że chcesz zawęzić nieco więcej. Można uruchomić:

DEBUG = * - indeks dwóch węzłów.js

Aby dostać tylko wyjście z debugowania, który został ustawiony na „-dwa” na końcu nazwy lub

debug- jedno- * węzła index.js

do uzyskaj wszystko zaczynając od "jednego" "Możesz także powiedzieć, że chcesz wszystko, lub zestaw rzeczy, lub wykluczyć wzory lub zestawy. Aby wykluczyć coś poprzedzać go z myślnikiem, przykład:

DEBUG = jedna * *, małpa - małpa: banan, -elephant, -chimp: * węzeł index.js

This będzie zawierać wszystko, zaczynając od „jeden” lub „małpa” i wykluczyć niczego o nazwie „małpa: banan” lub „słonia” lub zaczynające się od „szympansa:”

Jeśli chciał wykluczyć wszystko oprócz następnie:

DEBUG = *, - tupot n1, -pattern2 węzeł index.js

Powiązane problemy