2013-07-31 7 views
18

Ich versuche, Winston zu bekommen, um die Konsole zu recht zu drucken, so dass ich stecken diese in einer Datei und lief es mit Knoten:Winston nicht recht Druck zu trösten

var winston = require('winston'); 
winston.cli(); 
winston.data({ 
    a: "test", 
    of: "many", 
    properties: { 
    like: "this" 
    } 
}); 
winston.data('data', { 
    a: "test", 
    of: "many", 
    properties: { 
    like: "this" 
    } 
}); 

Das Terminal zurück spucken die folgenden (nicht gerade hübsch) Nachrichten:

data:  a=test, of=many, like=this 
data: data a=test, of=many, like=this 

ich folge den Anweisungen auf dem Winston Readme ("Verwenden von winston in einem CLI-Tool"). Lies ich etwas falsch? Irgendwo eine Einstellung verpassen?

Antwort

25

Ich fand die Antwort (die Dokumentation ist falsch). Wenn Sie den Konstruktor verwenden und Transporte manuell hinzufügen, können Sie Optionen sowohl für Winston als auch für einzelne Transporte festlegen. Bestimmte Optionen müssen direkt zu Winston hinzugefügt werden, während andere dem Transport hinzugefügt werden müssen.

Z. B .:

var winston = require('winston'); 
var logger = new (winston.Logger)({ 
    levels: { 
    trace: 0, 
    input: 1, 
    verbose: 2, 
    prompt: 3, 
    debug: 4, 
    info: 5, 
    data: 6, 
    help: 7, 
    warn: 8, 
    error: 9 
    }, 
    colors: { 
    trace: 'magenta', 
    input: 'grey', 
    verbose: 'cyan', 
    prompt: 'grey', 
    debug: 'blue', 
    info: 'green', 
    data: 'grey', 
    help: 'cyan', 
    warn: 'yellow', 
    error: 'red' 
    } 
}); 

logger.add(winston.transports.Console, { 
    level: 'trace', 
    prettyPrint: true, 
    colorize: true, 
    silent: false, 
    timestamp: false 
}); 

logger.add(winston.transports.File, { 
    prettyPrint: false, 
    level: 'info', 
    silent: false, 
    colorize: true, 
    timestamp: true, 
    filename: './nKindler.log', 
    maxsize: 40000, 
    maxFiles: 10, 
    json: false 
}); 
+6

farbig ist Sollten die Zahlen auf der Stufe in umgekehrter Reihenfolge sein? Z.B. Fehler = 0 und Trace = 9 https://github.com/winstonjs/winston#logging-levels – Lukas

+0

Dies funktioniert nicht mit benutzerdefinierten Formatierer. – theusguy

2

Ich habe die Antwort von @ partycoder und getrimmt es nur die Standardprotokollebene zu verwenden, nach unten, die mit winston kommen. Außerdem wird die Reihenfolge der Fehler nicht umgekehrt. 0 = höchste Priorität.

winston.addColors({ 
    silly: 'magenta', 
    debug: 'blue', 
    verbose: 'cyan', 
    info: 'green', 
    warn: 'yellow', 
    error: 'red' 
}); 

winston.remove(winston.transports.Console); 
winston.add(winston.transports.Console, { 
    level: process.env.LOG_LEVEL, 
    prettyPrint: true, 
    colorize: true, 
    silent: false, 
    timestamp: false 
}); 
0

Wenn Sie [email protected] verwenden, funktioniert die angenommene Antwort nicht. Versuchen Sie Folgendes:

const winston = require("winston"); 
let date = new Date().toISOString(); 
const logFormat = winston.format.printf(function(info) { 
    return `${date}-${info.level}: ${JSON.stringify(info.message, null, 4)}\n`; 
}); 
const logger = new winston.createLogger({ 
    transports: [ 
    new winston.transports.Console({ 
     level: level, 
     format: winston.format.combine(winston.format.colorize(), logFormat) 
    }) 
    ] 
}); 

Die Protokolle folgendes Format haben:

Es BTW

2018-03-01T19:49:54.042Z-info: "----- Customer Details ------" 

2018-03-01T19:49:54.042Z-info: [ 
    { 
     "A": 1, 
     "B": 2 
    } 
]