Maison >interface Web >js tutoriel >À propos de l'utilisation réelle de log4js dans Express

À propos de l'utilisation réelle de log4js dans Express

亚连
亚连original
2018-06-06 11:27:073347parcourir

Cet article présente principalement le guide pratique d'introduction aux log4js avancés dans Express. Maintenant, je le partage avec vous et le donne comme référence.

Pour les projets en ligne, la journalisation est une partie très importante. Log4js est un composant de journalisation fréquemment utilisé et est souvent utilisé avec Express. Cet article commence par un exemple d'introduction pour expliquer l'utilisation de log4js et comment l'intégrer à Express.

Exemple de démarrage

Le journal de sortie est le suivant, y compris l'heure d'impression du journal, le niveau du journal, la classification du journal et le contenu du journal.

// started.js
var log4js = require('log4js');
var logger = log4js.getLogger();
logger.debug('hello world');

// 输出: 
// [2017-02-28 21:28:22.853] [DEBUG] [default] - hello world

Niveau de journal

logger.setLevel('INFO'); signifie que le journal de niveau le plus bas que vous souhaitez imprimer est INFO, c'est-à-dire appeler quelque chose comme les journaux ne seront pas imprimés pour les interfaces avec des niveaux inférieurs à INFO telles que logger.debug().

var log4js = require('log4js');
var logger = log4js.getLogger();
logger.setLevel('INFO');

logger.debug('level: debug');
logger.info('level: info');
logger.error('level: error');

// 输出如下:
// [2017-02-28 21:50:45.372] [INFO] [default] - level: info
// [2017-02-28 21:50:45.376] [ERROR] [default] - level: error

Catégorie de journaux

En plus des niveaux, les journaux peuvent également être classés, log4js.getLogger(category), comme indiqué ci-dessous

var log4js = require('log4js');
var alogger = log4js.getLogger('category-a');
var blogger = log4js.getLogger('category-b');

alogger.info('hello');
blogger.info('hello');

// 输出如下:
// [2017-02-28 22:36:57.570] [INFO] category-a - hello
// [2017-02-28 22:36:57.574] [INFO] category-b - hello

appenders

appenders spécifie l'emplacement de la sortie du journal Vous pouvez en configurer plusieurs en même temps et utiliser la catégorie pour les distinguer. Par exemple, log4js.getLogger('info') applique la configuration dont le type est dateFile.

On peut remarquer que la configuration avec le type console ne déclare pas de catégorie, par conséquent, tous les journaux seront imprimés sur la console.

var log4js = require('log4js');

log4js.configure({
  appenders: [
    { type: 'console'},
    { type: 'dateFile', filename: './logs/info.log', category: 'info' }
  ]
});

var logger = log4js.getLogger('info');
logger.setLevel('INFO');

logger.trace('trace');
logger.debug('debug');
logger.info('info');

// 输出如下:
// [2017-02-28 22:51:30.723] [INFO] info - info

application express

Un exemple relativement simple est le suivant, tous les journaux sont imprimés sur la console.

var express = require('express');
var log4js = require('log4js');
var app = express();

log4js.configure({
  appenders: [
    { type: 'console', category: 'app' }
  ]
});

var logger = log4js.getLogger('app');

logger.setLevel('INFO'); // 级别 > INFO 的日志才会被打印

app.use( log4js.connectLogger(logger) );

app.use(function(req, res, next){
  res.send('ok');
});

app.listen(3000);

Accédez http://127.0.0.1:3000, le journal d'impression est le suivant

[2017-03-01 00:28:29.301] [INFO] app - : :ffff : 127.0.0.1 - - "GET / HTTP/1.1" 304 - "" "Mozilla/5.0 (Macintosh ; Intel Mac OS

Lors de l'utilisation de log4js.connectLogger(logger), vous pouvez déclarer le niveau de journalisation.

// 级别 > INFO 的日志才会被打印
logger.setLevel('INFO'); 

// 日志的级别是 WARN 
app.use( log4js.connectLogger(logger, {level: 'WARN'}) );
Notez que si le niveau de log déclaré est inférieur au niveau défini par logger.setLevel(level), le log ne sera pas imprimé, comme dans l'exemple suivant.

logger.setLevel('INFO'); 

app.use( log4js.connectLogger(logger, {level: 'DEBUG'}) );
J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Comment résoudre le problème selon lequel Vue ne peut pas détecter les changements dans les tableaux ou les objets ?

Quelles sont les méthodes pour ajouter de nouvelles propriétés d'objets à la séquence de détection en vue ?

Comment générer des nombres aléatoires en JS (tutoriel détaillé)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn