سجل

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

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

CI Test Coverage Audit

التثبيت

npm i @sumor/logger --save

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

إصدار Node.JS

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

احتاج إلى وحدة ES من Node.JS

نظرًا لأن هذه الحزمة مكتوبة بوحدة ES، يرجى تغيير الشفرة التالية في ملف 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

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

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

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 هو أعلى مستوى، سيتم الإخراج

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

```js
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، لن يتم إخراجه