2013-05-11 15 views
7

Il mio codice JS è solitamente pieno di messaggi di debug console.log(). A volte è meglio disattivarle o disattivarne una parte.Messaggi di debug di Console.log che gestiscono

Posso, ad esempio, avvolgere l'istruzione console.log() in alcune funzioni con condizioni definite da alcune costanti. È il modo migliore per gestire l'output di debug o sono alternative più eleganti?

risposta

4

Il wrapping di console.log in una funzione funziona correttamente. Ma notate che ci sono anche molte utility di logging per javascript. Un po 'di google su "js logger" può dare risultati adeguati.

+0

Con gratitudine! Hai già trovato qualcosa! :) – zavg

2

JS logger è uno strumento abbastanza buono e leggero con impostazioni flixible per i livelli dei messaggi di registro e diversi livelli di registrazione predefiniti (DEBUG, INFO, WARN, ERROR).

5

Bunyan modulo di registrazione è popolare per node.js

codice

Esempio hi.js:

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

uscita:

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

È quindi possibile filtrare dalle righe di comando:

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

Se stai usando Node.js poi debug è estremamente efficace come alternativa al console.log()

E 'fondamentalmente un sostituto per console.log() tranne che si può abilitarlo dalla riga di comando con il DEBUG variabile d'ambiente in base a come l'hai inizializzata in ogni file.

Diciamo che ho un progetto con un paio di file fa riferimento dal mio file 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'); 
} 

Tu hai debug inizializzato con il nome "one-one" nel primo file e "one-two" nel secondo file.

Sulla riga di comando che io possa correre in questo modo:

node index.js 

Risultato: nessun output di debug. Tuttavia, se corro così:

DEBUG=* node index.js 

L'sia le istruzioni di debug verranno scritti, tuttavia, in diversi colori e con il nome di debug (uno-uno o uno-due) in modo da poter dire quale file da cui sono venuti.

Ora diciamo che vuoi restringere un po 'di più. È possibile eseguire:

DEBUG = * - indice di due nodi.js

Per ottenere solo in uscita dal di debug che è stato impostato con "-due" alla fine del nome o

DEBUG = one * nodo index.js

a ottieni tutto a partire da "one-"

Puoi anche dire che vuoi tutto o un insieme di cose o escludere modelli o set. Per escludere qualcosa che precedere con un trattino, un esempio:

DEBUG = un *, * scimmia, - scimmia: banana, -elephant, -chimp: * nodo index.js

Questo includerà tutto inizia con "uno" o "scimmia" ed escludere qualsiasi cosa chiamato "scimmia: banana", o "elefante" o inizia con "scimpanzé:"

Se si voleva escludere tutto tranne poi:

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

Problemi correlati