En lisant et en jouant avec Winston, je suis perplexe quant à la raison pour laquelle les niveaux de journalisation sont ordonnés tels quels et pourquoi les transports se comportent comme ils le font (enfin, au moins celui de la console). J'apprécierais que quelqu'un puisse, peut-être même complètement, avec des exemples de cas d'utilisation réels, expliquer pourquoi la journalisation avec Winston fonctionne de cette façon?
Par exemple, je configure mon enregistreur comme ceci:
var logger = new (winston.Logger)({
levels: winston.config.syslog.levels,
colors: winston.config.syslog.colors,
level: "debug", // I'm not sure what this option even does here???
transports: [
new (winston.transports.Console)({
colorize: true,
handleExceptions: true,
json: false,
level: "debug"
})
]
});
Donc, si je fais logger.debug("Test");
, alors il enregistrera debug: Test
, Très bien. Mais si je fais logger.info("Test");
, alors rien ne se passe.
Le problème que j'ai est que, si je veux me connecter à la console tout maisdebug
messages, que fais-je? ... ou même debug
et info
messages, mais enregistrez tout le reste?
Venant d'un monde Java Java, en utilisant les enregistreurs standards, j'ai l'habitude d'avoir debug
étant plus "à grain fin" que warn
et les enregistreurs fonctionnaient à l'envers; la définition du niveau de journalisation sur info
, par exemple, enregistrait tout sauf debug
(ou quelque chose).
Et si j'aimerais qu'un enregistreur enregistre uniquement les messages error
, warning
et info
, comment puis-je faire cela avec Winston?
Apparemment, cet ordre de niveau est unique à winston.config.syslog.levels
. Donc, la seule question qui reste est: "Est-il possible, d'une manière ou d'une autre, de limiter un transport à un niveau de journalisation très spécifique uniquement?"
Conformément à la documentation , vous pouvez définir vos propres niveaux de journalisation, 0 étant le plus bas, et lui associer des couleurs. Maintenant, si vous ne voulez pas enregistrer le niveau le plus bas, définissez simplement la propriété level
sur le niveau correspondant. Par défaut, le consignateur de la console a son niveau défini sur info
Voici donc un exemple:
logger = new (winston.Logger)({
levels: {
'info': 0,
'ok': 1,
'error': 2
}
transports: [
new (winston.transports.ConsoleTransport)(silent: options.silent, level: 'ok')
]
});
var logger = new (winston.Logger)({
levels: {
'info': 0,
'ok': 1,
'error': 2
},
colors: {
'info': 'red',
'ok': 'green',
'error': 'yellow'
},
transports: [
new (winston.transports.Console)({level:'info',colorize: true})
]
});
logger.log('info',"This is info level");
logger.info("This is info level");