logger

Un outil Sumor Cloud.
Plus de documentation

Il s'agit d'un enregistreur léger pour Node.JS. Il peut générer des journaux à différents niveaux, et vous pouvez personnaliser la portée, l'identifiant et le fuseau horaire.

CI Test Couverture Audit

Installation

npm i @sumor/logger --save

Prérequis

Version de Node.JS

Nécessite la version de Node.JS 18.x ou supérieure

Requiert le module ES de Node.JS

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json :

{
  "type": "module"
}

Utilisation

Utilisation Générale

import Logger from '@sumor/logger'
const logger = new Logger()

logger.trace('Bonjour le monde!')
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 TRACE PRINCIPAL - Bonjour le monde!

Changer la Portée

Dans certains cas, nous devons catégoriser les journaux. La portée est utilisée à cette fin.

import Logger from '@sumor/logger'
const logger = new Logger({
  scope: 'DEMO'
})
logger.trace('Bonjour le monde!')
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 TRACE DEMO - Bonjour le monde!

Identifiant de l'Utilisateur

Dans certains cas, nous avons besoin d'identifier l'utilisateur. L'id est utilisé à cette fin.

import Logger from '@sumor/logger'
const logger = new Logger({
  id: 'USER001'
})
logger.trace('Bonjour le monde!')
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 TRACE PRINCIPAL USER001 - Bonjour le monde!

Changer le Niveau

La plupart du temps, nous devons seulement produire des journaux à un certain niveau. Ensuite, nous pouvons décider de les enregistrer et de les afficher ou non.

import Logger from '@sumor/logger'
const logger = new Logger()
logger.trace('Bonjour le monde!') // trace est le niveau le plus bas, tous les journaux seront produits
logger.debug('Bonjour le monde!')
logger.info('Bonjour le monde!')
logger.warn('Bonjour le monde!')
logger.error('Bonjour le monde!')
logger.fatal('Bonjour le monde!') // fatal est le niveau le plus élevé, seuls les erreurs critiques seront produits

Changer le Fuseau Horaire

import Logger from '@sumor/logger'
const logger1 = new Logger({
  offset: 2 * 60 // Le décalage UTC+2 est de 2 heures
})
logger1.info('Bonjour le monde!')
// Vous verrez la sortie suivante :
// 2020-01-01 02:00:00.000 INFO PRINCIPAL - Bonjour le monde!

const logger2 = new Logger({
  offset: 8 * 60 // Le décalage UTC+8 est de 8 heures
})
logger2.info('Bonjour le monde!')
// Vous verrez la sortie suivante :
// 2020-01-01 08:00:00.000 INFO PRINCIPAL - Bonjour le monde!

Code Prédéfini

import Logger from '@sumor/logger'
const code = {
  trace: {
    HTTP_ACCESS: 'L'utilisateur accède via HTTP et l'adresse IP est {ip}'
  },
  debug: {
    USER_TOKEN_LOADED: 'Les informations de connexion de l'utilisateur sont lues et l'identifiant de l'utilisateur est {id}'
  },
  info: {
    USER_LOGIN: 'L'utilisateur se connecte et l'identifiant de l'utilisateur est {id}'
  },
  warn: {
    USER_LOGOUT: 'L'utilisateur se déconnecte et l'identifiant de l'utilisateur est {id}'
  },
  error: {
    USER_LOGIN_FAILED: 'La connexion de l'utilisateur a échoué et l'identifiant de l'utilisateur est {id}'
  },
  fatal: {
    USER_LOGIN_BLOCKED: 'La connexion de l'utilisateur est bloquée et l'identifiant de l'utilisateur est {id}'
  }
}
const i18n = {
  zh: {
    USER_LOGIN: 'La connexion de l'utilisateur, l'identifiant de l'utilisateur est {id}'
  }
}
const logger1 = new Logger({
  code,
  i18n
})

logger1.code('USER_LOGIN', { id: 'USER001' })
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 INFO PRINCIPAL - L'utilisateur se connecte et l'identifiant de l'utilisateur est USER001

const logger2 = new Logger({
  code,
  i18n,
  langue: 'zh-US'
})

logger2.code('USER_LOGIN', { id: 'USER001' })
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 INFO PRINCIPAL - L'utilisateur se connecte et l'identifiant de l'utilisateur est USER001

const logger3 = new Logger({
  code,
  i18n,
  langue: 'zh-CN'
})

logger3.code('USER_LOGIN', { id: 'USER001' })
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 INFO PRINCIPAL - La connexion de l'utilisateur, l'identifiant de l'utilisateur est USER001

Paramétrage de la Langue Globale

process.env.LANGUAGE = 'zh-CN'
import Logger from '@sumor/logger'

const code = {
  info: {
    USER_LOGIN: 'L'utilisateur se connecte et l'identifiant de l'utilisateur est {id}'
  }
}
const i18n = {
  zh: {
    USER_LOGIN: 'La connexion de l'utilisateur, l'identifiant de l'utilisateur est {id}'
  }
}
const logger = new Logger({
  code,
  i18n
})

logger.code('USER_LOGIN', { id: 'USER001' })
// Vous verrez la sortie suivante :
// 2020-01-01 00:00:00.000 INFO PRINCIPAL - La connexion de l'utilisateur, l'identifiant de l'utilisateur est USER001

Filtrer par Niveau

Lorsque vous souhaitez filtrer les journaux par niveau, vous pouvez utiliser le code suivant :

import Logger from '@sumor/logger'
const logger = new Logger({
  level: 'info'
})
logger.trace('Bonjour le monde!') // trace est le niveau le plus bas, ne sera pas produit
logger.debug('Bonjour le monde!') // debug est inférieur à info, ne sera pas produit
logger.info('Bonjour le monde!') // info est le même qu'info, sera produit
logger.warn('Bonjour le monde!') // warn est supérieur à info, sera produit
logger.error('Bonjour le monde!') // error est supérieur à info, sera produit
logger.fatal('Bonjour le monde!') // fatal est le niveau le plus élevé, sera produit

Lorsque vous utilisez cette bibliothèque avec plusieurs bibliothèques, vous pouvez utiliser le code suivant :

import Logger from '@sumor/logger'
const logger = new Logger()
process.env.LOG_LEVEL = 'info'

logger.trace('Bonjour le monde!') // trace est le niveau le plus bas, ne sera pas produit
logger.debug('Bonjour le monde!') // debug est inférieur à info, ne sera pas produit
logger.info('Bonjour le monde!') // info est le même qu'info, sera produit
logger.warn('Bonjour le monde!') // warn est supérieur à info, sera produit
logger.error('Bonjour le monde!') // error est supérieur à info, sera produit

process.env.LOG_LEVEL = 'warn' // changer le niveau de journalisation en temps réel
logger.info('Bonjour le monde!') // info est inférieur à warn, ne sera pas produit