مُسجل

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

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

CI Test Coverage Audit

التثبيت

npm i @sumor/logger --save

المتطلبات

إصدار Node.JS

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

تحتاج لـ Node.JS ES module

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

{
  "type": "module"
}

الاستخدام

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

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

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

تغيير النطاق

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

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