J'essaie de coloriser la sortie de la console et cela ne fonctionne pas. La sortie est de la même couleur (blanche). Je suis sur 3.0.0-rc1.
const winston = require('winston');
const logLevels = {
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
sql: 4,
debug: 5
},
colors: {
error: "red",
warn: "darkred",
info: "black",
http: "green",
sql: "blue",
debug: "gray"
}
};
winston.addColors(logLevels);
const logger = winston.createLogger({...});
logger.add(new winston.transports.Console({colorize: true}));
J'ai aussi essayé la suggestion ici mais cela ne fonctionne pas non plus:
logger.add(new winston.transports.Console({format: winston.format.combine(formatter, winston.format.colorize())}));
Merci,
Álvaro
J'ai pu le faire fonctionner partiellement en utilisant la documentation de logform .
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf(info => `${info.timestamp} [${info.level}]: ${info.message}`),
);
Vous ne savez pas comment gérer le vidage des arguments JSON.
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf((info) => {
const {
timestamp, level, message, ...args
} = info;
const ts = timestamp.slice(0, 19).replace('T', ' ');
return `${ts} [${level}]: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
}),
);
Après deux heures, j'ai réussi à faire fonctionner les couleurs, merci @Xeoncross !
a commencé winston et a également obtenu une console sans couleurs ...
j'utilisais le prochain code de définition de transport:
new winston.transports.Console({
format: winston.format.simple()
})
après avoir lu ce fil, j'ai fait comme ceci:
new winston.transports.Console({
format: winston.format.combine(
winston.format.simple(),
winston.format.colorize()
)
})
et n'a obtenu aucune différence.
donc j'ai changé la position du format de colorisation en 1er et j'ai fait fonctionner les couleurs
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
)
})
Merci @abrakadobr ! ça a fait l'affaire.
rien ici n'a fonctionné pour moi, toujours pas de couleurs, et le déplacement de la colorisation vers le haut a provoqué l'enregistrement des chaînes encodées dans le champ d'informations
J'ai créé un résumé qui montre comment utiliser la journalisation winston & morgan dans une simple application expressjs.
Merci @Xeoncross ! L'ajout de winston.format.colorize() à mon format a fonctionné. Intéressant que ce ne soit pas dans la doc. Ou du moins je ne l'ai pas trouvé dans la doc.
J'adore la nouvelle flexibilité, mais j'espère qu'elle sera mieux documentée. J'ai juste passé trop de temps à faire fonctionner ça. Un exemple plug-n-play pour ceux d'entre nous qui utilisaient winston.cli()
irait loin, quelque chose de similaire à l'exemple de @ Xeoncross.
Quelqu'un sait comment faire avec la version actuelle ? Une version release candidate n'est pas une option.
En lisant le code, vous pouvez également envoyer all
au colorize
comme option pour coloriser l'intégralité du journal.
colorize({ all: true })
@markhealey J'ai déjà supprimé la dépendance Winston de mon package.json, puis j'ai lu votre message. Merci :+1:
Merci @Xeoncross. Jetez un œil à : https://github.com/winstonjs/logform/blob/master/timestamp.js . Vous pouvez formater l'horodatage avec format
opt param. Mais attention au fuseau horaire
format.combine(
format.colorize(),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.align(),
format.printf(info => {
const { timestamp, level, message, ...extra } = info;
return `${timestamp} [${level}]: ${message} ${
Object.keys(extra).length ? JSON.stringify(extra, null, 2) : ''
}`;
}),
)
format.colorize({all:true}
ne fonctionne pas vraiment si l'horodatage est inclus, voici un exemple de travail pour coloriser toute la ligne :
const colorizer = winston.format.colorize();
const logger = winston.createLogger({
level: 'debug',
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new transports.Console(),
]
});
vérifier mon enregistreur complet
Merci @abrakadobr , votre solution a fonctionné pour moi.
@tommuhm Je vois le défaut maintenant. Il n'y a pas d'option de format intégrée pour colorize
si l'on veut effectivement coloriser l'intégralité printf
. Cela a-t-il un sens pour vous ?
const { createLogger, format, transports } = require('../');
const logger = createLogger({
level: 'debug',
format: format.combine(
format.timestamp(),
format.simple(),
format.printf(info => `${info.timestamp} - ${info.level}: ${info.message}`),
format.colorize({ all: true })
),
transports: [
new transports.Console(),
]
});
logger.error('wowza');
Le plus délicat est de connaître le colorizer
lorsqu'un info
a été "sérialisé" (c'est-à-dire lorsque info[MESSAGE]
a été défini sur une chaîne). Suivi PR à logform
sous peu - merci d'avoir fouillé !
@Xeoncross, nous pouvons également réaliser la même chose de manière beaucoup plus simple
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, printf } = format;
const level = process.env.LOG_LEVEL || 'debug';
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} ${level}: ${message}`;
});
const logger = createLogger({
format: combine(colorize(), timestamp(), myFormat),
transports: [new transports.Console()]
});
référence : https://www.npmjs.com/package/winston#using -custom-logging-levels
J'utilise winston pour me connecter à cloudwatch et essayer d'ajouter de la couleur mais au lieu de symboles de couleur apparaissent. J'essaie toutes les solutions mentionnées ci-dessus. ci-dessous mon code
const winston = require('winston');
const {transports, format, createLogger } = winston;
const { combine,errors,timestamp} = format;
const colorizer = winston.format.colorize();
const logger = createLogger({
level: process.env.LOG_LEVEL,
prettyPrint : true,
format: combine(
winston.format.timestamp(),
winston.format.simple(),
winston.format.printf(msg =>
colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
)
),
transports: [
new transports.Console()
]
});
module.exports = {logger};
et dans la sortie de la console cloudwatch est
[34m2019-08-22T13:00:03.325Z - debug: res by id: [
{
"isActive": true,
"value": "fNUMheWiwXayKsaYCbUeA7Gg7BtEPIUbakB56XH1",
"id": "oehlwqlcve",
"userId": "6b347b41-ddef-4842-83a0-1cd5ca358482"
}
][39m
ce [39m apparaît au lieu de la couleur. Toute suggestion?
-22T13:00:03.325Z - débogage : res par identifiant : [
J'ai également le même problème. Avez-vous réussi à le réparer ?
-22T13:00:03.325Z - débogage : res par identifiant : [
J'ai également le même problème. Avez-vous réussi à le réparer ?
Des mises à jour à ce sujet ? L'avez-vous résolu d'une manière ou d'une autre?
@Xeoncross, nous pouvons également réaliser la même chose de manière beaucoup plus simple
const { createLogger, format, transports } = require('winston'); const { combine, timestamp, colorize, printf } = format; const level = process.env.LOG_LEVEL || 'debug'; const myFormat = printf(({ level, message, label, timestamp }) => { return `${timestamp} ${level}: ${message}`; }); const logger = createLogger({ format: combine(colorize(), timestamp(), myFormat), transports: [new transports.Console()] });
référence : https://www.npmjs.com/package/winston#using -custom-logging-levels
Cela a fait l'affaire pour moi dans iTerm sur MacOS
Le lien ci-dessous a fonctionné pour moi:
https://stackoverflow.com/questions/51012150/winston-3-0-colorize-whole-output-on-console
Commentaire le plus utile
J'ai pu le faire fonctionner partiellement en utilisant la documentation de logform .
Vous ne savez pas comment gérer le vidage des arguments JSON.
Mise à jour voici ce que j'ai travaillé: