web-dev-qa-db-fra.com

Winston: comprendre les niveaux de journalisation

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?

* ÉDITER *

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?"

18
Yanick Rochon

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')
  ]
});
8
kumarharsh
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");
1
mostafa.mortazavi