جهاز تسجيل

أداة Sumor Cloud.
مزيد من الوثائق

هذا جهاز تسجيل خفيف الوزن لـ Node.JS. يمكنه إخراج السجلات في مستويات مختلفة، ويمكنك تخصيص النطاق والمعرف والمنطقة الزمنية.

CI Test Coverage Audit

التثبيت

npm i @sumor/logger --save

الشروط الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 18.x أو أعلى

يتطلب إصدار Node.JS للوحدة ES

نظرًا لأن هذه الحزمة مكتوبة في وحدة ES، يرجى تغيير الشيفرة التالية في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

الاستخدام العام

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

logger.trace('مرحباً بالعالم!')
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 TRACE PRINCIPAL - مرحباً بالعالم!

تغيير النطاق

في بعض الحالات، نحتاج إلى تصنيف السجلات. يتم استخدام "النطاق" لهذا الغرض.

import Logger from '@sumor/logger'
const logger = new Logger({
  scope: 'DEMO'
})
logger.trace('مرحباً بالعالم!')
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 TRACE DEMO - مرحباً بالعالم!

تحديد المستخدم

في بعض الحالات، نحتاج إلى تحديد المستخدم. يتم استخدام "المعرف" لهذا الغرض.

import Logger from '@sumor/logger'
const logger = new Logger({
  id: 'USER001'
})
logger.trace('مرحباً بالعالم!')
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 TRACE PRINCIPAL USER001 - مرحباً بالعالم!

تحديد المستوى

غالبًا ما نحتاج إلى إخراج سجلات من مستوى معين. يمكننا بعد ذلك أن نقرر ما إذا كان نرجعها للحفظ والعرض أم لا.

import Logger from '@sumor/logger'
const logger = new Logger()
logger.trace('مرحباً بالعالم!') // trace هو أدنى مستوى، ستتم إخراج جميع السجلات
logger.debug('مرحباً بالعالم!')
logger.info('مرحباً بالعالم!')
logger.warn('مرحباً بالعالم!')
logger.error('مرحباً بالعالم!')
logger.fatal('مرحباً بالعالم!') // fatal هو أعلى مستوى، ستتم إخراج الأخطاء الحرجة فقط

تغيير المنطقة الزمنية

import Logger from '@sumor/logger'
const logger1 = new Logger({
  offset: 2 * 60 // تبلغ منطقة الزمن UTC+2 2 ساعة
})
logger1.info('مرحباً بالعالم!')
// سترى الناتج التالي:
// 2020-01-01 02:00:00.000 INFO MAIN - مرحباً بالعالم!

const logger2 = new Logger({
  offset: 8 * 60 // تبلغ منطقة الزمن UTC+8 8 ساعات
})
logger2.info('مرحباً بالعالم!')
// سترى الناتج التالي:
// 2020-01-01 08:00:00.000 INFO MAIN - مرحباً بالعالم!

رمز محدد مسبقًا

import Logger from '@sumor/logger'
const code = {
  trace: {
    HTTP_ACCESS: 'يستخدم المستخدم HTTP وعنوان IP هو {ip}'
  },
  debug: {
    USER_TOKEN_LOADED: 'تم قراءة معلومات تسجيل الدخول للمستخدم وهوية المستخدم {id}'
  },
  info: {
    USER_LOGIN: 'يقوم المستخدم بتسجيل الدخول وهوية المستخدم {id}'
  },
  warn: {
    USER_LOGOUT: 'يقوم المستخدم بتسجيل الخروج وهوية المستخدم {id}'
  },
  error: {
    USER_LOGIN_FAILED: 'فشل تسجيل الدخول للمستخدم وهوية المستخدم {id}'
  },
  fatal: {
    USER_LOGIN_BLOCKED: 'تم حظر تسجيل الدخول للمستخدم وهوية المستخدم {id}'
  }
}
const i18n = {
  zh: {
    USER_LOGIN: 'المستخدم يقوم بتسجيل الدخول وهوية المستخدم {id}'
  }
}
const logger1 = new Logger({
  code,
  i18n
})

logger1.code('USER_LOGIN', { id: 'USER001' })
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 INFO MAIN - المستخدم يقوم بتسجيل الدخول وهوية المستخدم USER001

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

logger2.code('USER_LOGIN', { id: 'USER001' })
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 INFO MAIN - المستخدم يقوم بتسجيل الدخول وهوية المستخدم USER001

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

logger3.code('USER_LOGIN', { id: 'USER001' })
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 INFO MAIN - المستخدم يقوم بتسجيل الدخول وهوية المستخدم USER001

ضبط لغة عامة

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

const code = {
  info: {
    USER_LOGIN: 'يقوم المستخدم بتسجيل الدخول وهوية المستخدم {id}'
  }
}
const i18n = {
  zh: {
    USER_LOGIN: 'المستخدم يقوم بتسجيل الدخول وهوية المستخدم {id}'
  }
}
const logger = new Logger({
  code,
  i18n
})

logger.code('USER_LOGIN', { id: 'USER001' })
// سترى الناتج التالي:
// 2020-01-01 00:00:00.000 INFO MAIN - المستخدم يقوم بتسجيل الدخول وهوية المستخدم USER001

تصفية المستوى

عندما ترغب في تصفية السجلات حسب المستوى، يمكنك استخدام الشيفرة التالية:

import Logger from '@sumor/logger'
const logger = new Logger({
  level: 'info'
})
logger.trace('مرحباً بالعالم!') // trace هو أدنى مستوى، لن يتم الإخراج
logger.debug('مرحباً بالعالم!') // debug أدنى من info، لن يتم الإخراج
logger.info('مرحباً بالعالم!') // info هو نفسه كـ info، سيتم الإخراج
logger.warn('مرحباً بالعالم!') // warn أعلى من info، سيتم الإخراج
logger.error('مرحباً بالعالم!') // error أعلى من info، سيتم الإخراج
logger.fatal('مرحباً بالعالم!') // fatal أعلى مستوى، سيتم الإخراج

عند استخدام هذه المكتبة بين عدة مكتبات، يمكنك استخدام الشيفرة التالية:

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

logger.trace('مرحباً بالعالم!') // trace هو أدنى مستوى، لن يتم الإخراج
logger.debug('مرحباً بالعالم!') // debug أدنى من info، لن يتم الإخراج
logger.info('مرحباً بالعالم!') // info هو نفسه كـ info، سيتم الإخراج
logger.warn('مرحباً بالعالم!') // warn أعلى من info، سيتم الإخراج
logger.error('مرحباً بالعالم!') // error أعلى من info، سيتم الإخراج

process.env.LOG_LEVEL = 'warn' // تغيير مستوى السجل في الوقت الفعلي
logger.info('مرحباً بالعالم!') // info أقل من warn، لن يتم الإخراج