واجهة Logger

تسجيل الرسائل طريقة إضافية لعرض معلومات مفيدة للمستخدمين أثناء البناء أو عند تحليل نتائجه.

يوفّر webpack logger يمكن استخدامه داخل loaders وplugins. ويمكن إخراج هذه الرسائل ضمن Stats أو التحكم بها من خلال إعدادات webpack.

فوائد logging API المخصص في webpack:

  • مكان موحّد لضبط مستوى عرض الرسائل.
  • إمكانية تصدير رسائل logging ضمن ملف stats.json.
  • تأثير stats presets على رسائل logging.
  • قدرة plugins على التأثير في التقاط الرسائل ومستوى عرضها.
  • استخدام حل logging موحد عندما يعمل أكثر من plugin أو loader معًا.
  • إمكانية اختيار CLI أو أدوات UI الخاصة بـ webpack طرقًا مختلفة لعرض الرسائل.
  • قدرة webpack core على إخراج رسائل logging، مثل بيانات التوقيت.

من خلال webpack logging API، يحاول webpack توحيد طريقة إخراج logs من plugins وloaders، وتوفير طرق أفضل لفحص مشاكل البناء. هذا الحل المدمج يساعد مطوري plugins وloaders ويحسّن تجربة التطوير، ويمهّد لحلول غير CLI مثل dashboards أو واجهات UI أخرى.

أمثلة لاستخدام webpack logger داخل loaders وplugins

my-webpack-plugin.js

const PLUGIN_NAME = "my-webpack-plugin";

export class MyWebpackPlugin {
  apply(compiler) {
    // you can access Logger from compiler
    const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
    logger.log("log from compiler");

    compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
      // you can also access Logger from compilation
      const logger = compilation.getLogger(PLUGIN_NAME);
      logger.info("log from compilation");
    });
  }
}

my-webpack-loader.js

export default function (source) {
  // you can get Logger with `this.getLogger` in your webpack loaders
  const logger = this.getLogger("my-webpack-loader");
  logger.info("hello Logger");
  return source;
}

كما يظهر في مثال my-webpack-plugin.js أعلاه، توجد طريقتان أساسيتان للحصول على logger:

  1. compilation.getLogger
  2. compiler.getInfrastructureLogger

ينصح باستخدام compilation.getLogger عندما تكون الرسائل مرتبطة بعملية compilation نفسها، لأنها ستُحفظ ضمن stats. أما logging الذي يحدث خارج دورة compilation، فاستخدم له compiler.getInfrastructureLogger.

دوال Logger

  • logger.error(...): لرسائل الأخطاء.
  • logger.warn(...): للتحذيرات.
  • logger.info(...): للرسائل المهمة. تظهر هذه الرسائل افتراضيًا، لذلك استخدمها فقط للمعلومات التي يحتاج المستخدم إلى رؤيتها فعلًا.
  • logger.log(...): للرسائل المعلوماتية الأقل أهمية. لا تظهر هذه الرسائل إلا إذا اختار المستخدم عرضها.
  • logger.debug(...): لمعلومات التصحيح. لا تظهر إلا إذا اختار المستخدم تفعيل debug logging لـ modules محددة.
  • logger.trace(): لعرض stack trace. تُعرض مثل logger.debug.
  • logger.group(...): لتجميع الرسائل. تُعرض مطوية مثل logger.log.
  • logger.groupEnd(): لإنهاء مجموعة logging.
  • logger.groupCollapsed(...): لتجميع الرسائل معًا. تُعرض مطوية مثل logger.log، وتظهر مفتوحة عندما يكون مستوى logging هو 'verbose' أو 'debug'.
  • logger.status: يكتب رسالة مؤقتة ويضبط status جديدًا بدل السابق.
  • logger.clear(): لطباعة خط فاصل. تُعرض مثل logger.log.
  • logger.profile(...), logger.profileEnd(...): لالتقاط profile. تُمرر إلى console.profile عندما يكون مدعومًا.

Runtime Logger API

Runtime logger API مخصص للاستخدام كأداة تطوير فقط، وليس المقصود تضمينه في وضع الإنتاج.

  • import logging from 'webpack/lib/logging/runtime': لاستخدام logger وقت التشغيل، استورده مباشرة من webpack.
  • logging.getLogger('name'): للحصول على logger مستقل بالاسم.
  • logging.configureDefaultLogger(...): لاستبدال logger الافتراضي.
import logging from "webpack/lib/logging/runtime";

logging.configureDefaultLogger({
  level: "log",
  debug: /something/,
});
  • logging.hooks.log: لتطبيق plugins على runtime logger.
·تعديل هذه الصفحة
السابق ›
واجهة Loader
‹ التالي
دوال Module

1 مساهم

RlxChap2