مسجل

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

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

CI Test Coverage Audit

التثبيت

npm i @sumor/logger --save

المتطلبات الأولية

إصدار Node.JS

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

يتطلب إصدار Node.JS إس موديول

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

{
  "type": "module"
}

الاستخدام

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

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

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

تغيير النطاق

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

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

تعريف المستخدم

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

import Logger from '@sumor/logger'
const logger = new Logger({
  id: 'USER001'
})
logger.trace('مرحبًا بالعالم!')
// سترون الإخراج التالي:
// 2020-01-01 00:00:00.000 TRACE MAIN 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، لن يتم الإخراج