Winston: Le format de journal personnalisé pour les fichiers ne semble pas fonctionner

Créé le 2 avr. 2015  ·  4Commentaires  ·  Source: winstonjs/winston

Salut,

J'ai utilisé votre fonction de formateur pour fournir un format personnalisé à mes messages de journal. Cela fonctionne parfaitement pour le transport.Console mais le transport.File semble ignorer le formateur personnalisé.

voici mon formateur de fichier personnalisé :

function customFileFormatter (options) {
    // Return string will be passed to logger.
    return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') +
     (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' );
}

c'est essentiel l'enregistreur donné dans votre exemple. Je l'applique comme ceci :

winston.add(winston.transports.File, { 
    name: 'info-file',
    filename: logPath + '/info.log',
    level: 'info',
    maxsize: 15000000,
    formatter: customFileFormatter
});

mais la sortie dans le fichier de journalisation reste la même :
{"level":"info","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}
ça devrait être:
{"level":"[INFO]","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}

Je ne sais pas ce qui ne va pas car la même chose fonctionne avec le transport.Console.

s'il vous plait aidez

les salutations

Tonacate

Commentaire le plus utile

OK, c'est pas grave.
oublié de régler
json: false

mais ce serait cool si vous pouviez changer juste quelques champs dans la journalisation json :)

Tous les 4 commentaires

OK, c'est pas grave.
oublié de régler
json: false

mais ce serait cool si vous pouviez changer juste quelques champs dans la journalisation json :)

Il m'a fallu un peu pour savoir où définir "json: false". Réglez-le sur le(s) transport(s) de fichiers. Voici mon exemple :

const logFormatter = function(options) {
    // Return string will be passed to logger.

    return options.timestamp() +` `+ options.level.toUpperCase() +
        ` `+ (options.message ? options.message : ``) +
        (options.meta && Object.keys(options.meta).length ?
            `\n\t`+ JSON.stringify(options.meta) : `` );
};

const timestamp = function() {
    const d = new Date();
    return d.getHours() + `:` + d.getMinutes() + `:` +
        d.getSeconds() + `m` + d.getMilliseconds();
};

const logger = new (winston.Logger)({
    transports: [
        new (winston.transports.File)({
            timestamp: timestamp,
            formatter: logFormatter,
            level: `silly`,
            name: `fileAll`,
            filename: `fileAll.log`,
            json: false,                                 // set json:false on the file transport(s)
        })
    ]
});

le formateur fonctionne bien pour moi mais l'horodatage imprime toujours une chaîne littérale

fonction () {
const d = nouvelle date();
return d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|DEBUG|Message pour un débogage
fonction () {
const d = nouvelle Date();
return d.getHours() + : + d.getMinutes() + : +
d.getSeconds() + m + d.getMilliseconds();
}|URGENCE|Message pour un débogage

OK, c'est pas grave.
oublié de régler
json: false

mais ce serait cool si vous pouviez changer juste quelques champs dans la journalisation json :)

Tu m'as fait gagner du temps ! Je me demande où est-ce documenté..

Cette page vous a été utile?
0 / 5 - 0 notes