2016-06-13 8 views
0

Ich benutze eine benutzerdefinierte winston Logger gleichzeitig schreiben auf der Konsole und in eine Datei abhängig von der Protokollierungsebene (d. H. Alles auf der Konsole, sondern nur Fehler und Warnungen für die Datei). Aus irgendeinem Grund funktioniert das Schreiben an die Konsole, während nichts in die Datei geschrieben wird, obwohl ich einen Fehler rufe.Winston schreibt nur auf einen einzigen Transport

Anfangs verwirrte ich die Reihenfolge der Stufen nach oben, von trace = 0-error = 9. steigen beginnen Während ich, dass das Setup winston in die Datei geschrieben hatte, aber nicht an die Konsole. Ich nehme an, winston schreibt nur auf einen Transport und stoppt dann?

Meine Config geht so:

import winston from 'winston'; 

const logger = new (winston.Logger)({ 
    levels: { 
    trace: 9, 
    input: 8, 
    verbose: 7, 
    prompt: 6, 
    debug: 5, 
    info: 4, 
    data: 3, 
    help: 2, 
    warn: 1, 
    error: 0, 
    }, 
    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: 'error', 
    silent: false, 
    colorize: true, 
    timestamp: true, 
    filename: `${__dirname}/../logs/error.log`, 
    maxsize: 40000, 
    maxFiles: 10, 
    json: false, 
}); 

Antwort

0

Es scheint, ich hatte jeden Transport einen Namen zu geben. I.e.

logger.add(winston.transports.Console, { 
    name: 'trace-console', 
    // ... 
}); 

logger.add(winston.transports.File, { 
    name: 'error-file', 
    // ... 
}); 

Jetzt scheint es zu funktionieren, wie erwartet.

edit: Aus irgendeinem Grund müssen beide die colorize Option haben, um auch wahr (?) Zu sein.

Verwandte Themen