الفرق بين المراجعتين لصفحة: «Node.js/tracing»

من موسوعة حسوب
لا ملخص تعديل
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
تتبع الأحداث (Trace Events)
<noinclude>{{DISPLAYTITLE: تتبع الأحداث (Trace Events) في Node.js}}</noinclude>
 
مؤشر الاستقرار: 1 - تجريبي
مؤشر الاستقرار: 1 - تجريبي


سطر 57: سطر 56:
أُضيفت مع الإصدار: v10.0.0.
أُضيفت مع الإصدار: v10.0.0.


=== الكائن <code>'Tracing'</code> ===
=== الكائن <code>'''<nowiki/>'Tracing''''</code> ===
أُضيف مع الإصدار: v10.0.0.
أُضيف مع الإصدار: v10.0.0.


سطر 64: سطر 63:
ويكون الكائن <code>Tracing</code> معطلًا عند إنشاءه. يضيف استدعاء التابع <code>tracing.enable()‎</code> الفئات إلى مجموعة من فئات أحداث التتبع المُفعَّلة. ويُزيل استدعاء التابع <code>tracing.disable()‎</code> الفئات من مجموعة من فئات أحداث التتبع المُفعَّلة.
ويكون الكائن <code>Tracing</code> معطلًا عند إنشاءه. يضيف استدعاء التابع <code>tracing.enable()‎</code> الفئات إلى مجموعة من فئات أحداث التتبع المُفعَّلة. ويُزيل استدعاء التابع <code>tracing.disable()‎</code> الفئات من مجموعة من فئات أحداث التتبع المُفعَّلة.


tracing.categories
==== <code>tracing.categories</code> ====
أُضيف مع الإصدار: v10.0.0.


أُضيف مع الإصدار: v10.0.0
    • القيمة المُعادة: من النوع <code>[[JavaScript/String|<string>]]</code>.


    • من النوع <string>.
قائمة مفصولة بفاصلات تحتوي على فئات أحداث التتبع التي يغطيها كائن <code>Tracing</code> هذا.


قائمة مفصولة بفاصلات تحتوي على فئات أحداث التتبع التي يغطيها كائن Tracing هذا.
==== <code>tracing.disable()‎</code> ====
أُضيف مع الإصدار: v10.0.0.


tracing.disable()
يعطِّل كائن <code>Tracing</code> هذا.
 
ستتعطل فقط فئات أحداث التتبع غير المشمولة من قِبَل كائنات <code>Tracing</code> المُفعَّلة الأخرى وغير المحددة بواسطة الراية ‎<code>--trace-event-categories</code>.<syntaxhighlight lang="javascript">
const trace_events = require('trace_events');
const t1 = trace_events.createTracing({ categories: ['node', 'v8'] });
const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] });
t1.enable();
t2.enable();


أُضيف مع الإصدار: v10.0.0
// طباعة 'node,node.perf,v8'
console.log(trace_events.getEnabledCategories());


يعطِّل كائن Tracing هذا.
t2.disable(); // فقط ستعطل إطلاق فئة 'node.perf'


سيتعطل فقط فئات أحداث التتبع غير المشمولة من قِبَل كائنات Tracing المُفعَّلة الأخرى وغير المحددة بواسطة الراية--trace-event-categories.
// طباعة 'node,v8'
console.log(trace_events.getEnabledCategories());
</syntaxhighlight>


tracing.enable()
==== <code>tracing.enable()‎</code> ====
أُضيف مع الإصدار: v10.0.0.


أُضيف مع الإصدار: v10.0.0
تفعيل كائن <code>Tracing</code> هذا لمجموعة الفئات التي يغطيها كائن  <code>Tracing</code>.


تفعيل كائن Tracing هذا لمجموعة الفئات التي يغطيها كائن  Tracing.
<code>tracing.enabled</code>


tracing.enabled
أُضيف مع الإصدار: v10.0.0.


أُضيف مع الإصدار: v10.0.0
    • من النوع <code>[[JavaScript/Boolean|<boolean>]]</code> وتكون قيمتها <code>true</code> فقط إذا كان الكائن <code>Tracing</code> مُفعَّلًا.


    • من النوع <boolean> وتكون قيمتها true فقط إذا كان الكائن Tracing مُفعَّلًا.
=== <code>trace_events.createTracing(options)‎</code> ===
أُضيف مع الإصدار: v10.0.0.


trace_events.createTracing(options)
    • <code>options</code> من النوع  <code>[[JavaScript/Object|<Object>]]</code>.


أُضيف مع الإصدار: v10.0.0
        ◦ <code>categories</code> من النوع ‎<code>[[JavaScript/String|<string[]>]]</code>‎ وهي مصفوفة من أسماء فئات التتبع. تُحوَّل القيم المدرجة في المصفوفة إلى سلسلة جبرًا كلما كان ذلك ممكنًا. وسينطلق خطأ إذا كان لا يمكن فرض القيمة.


    • options من النوع  <Object>
    • القيمة المُعادة: من النوع <code><Tracing></code>.


        ◦ categories من النوع <string[]> مصفوفة من أسماء فئات التتبع. تُحوَّل القيم المدرجة في المصفوفة إلى سلسلة جبرًا كلما كان ذلك ممكنًا. وسينطلق خطأ إذا كان لا يمكن فرض القيمة.
إنشاء وإعادة كائن <code>Tracing</code> للمجموعة المعطاة من الفئات <code>categories</code>.


    • القيمة المُعادة: من النوع <Tracing>.
=== <code>trace_events.getEnabledCategories()‎</code> ===
أُضيف مع الإصدار: v10.0.0.


إنشاء وإعادة كائن Tracing للمجموعة المعطاة من الفئات categories.
    • القيمة المُعادة: من النوع <code>[[JavaScript/String|<string>]]</code>.


trace_events.getEnabledCategories()
يُعيد قائمة مفصولة بفاصلات لكل فئات أحداث التتبع المُفعَّلة حالياً. وهو يحدد المجموعة الحالية من فئات أحداث التتبع المُفعَّلة بواسطة ''اتحاد'' من جميع كائنات <code>Tracing</code> المُفعَّلة حاليًا مع أي فئة  مُفعَّلة باستخدام الراية  ‎<code>--trace-event-categories</code>.


أُضيف مع الإصدار: v10.0.0
وبالنظر إلى الملف  <code>test.js</code> أدناه، سيطبع الأمر <code>node --trace-event-categories node.perf test.js</code> على الشاشة <code>'node.async_hooks,node.perf'</code>.<syntaxhighlight lang="javascript">
const trace_events = require('trace_events');
const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] });
const t2 = trace_events.createTracing({ categories: ['node.perf'] });
const t3 = trace_events.createTracing({ categories: ['v8'] });


    • القيمة المُعادة: من النوع <string>.
t1.enable();
t2.enable();


يُعيد قائمة مفصولة بفاصلات لكل فئات أحداث التتبع المُفعَّلة حالياً. تُحدد المجموعة الحالية من فئات أحداث التتبع المفعلة بواسطة اتحاد من جميع كائنات Tracing المُفعَّلة حاليًا مع أي فئة  مُفعَّلة باستخدام الراية  -trace-event-categories.
console.log(trace_events.getEnabledCategories());
</syntaxhighlight>


وبالنظر إلى الملف  test.js أدناه، سيطبع الأمر node --trace-event-categories node.perf test.js على الشاشة 'node.async_hooks,node.perf'.
== مصادر ==
* [https://nodejs.org/dist/latest-v10.x/docs/api/tracing.html صفحة تتبع الأحداث (Trace Events) في توثيق Node.js الرسمي].
[[تصنيف:Node.js|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 11:19، 23 أكتوبر 2018

مؤشر الاستقرار: 1 - تجريبي

يوفر تتبع الأحداث آلية لتركيز معلومات التتبع التي  تولدت بواسطة V8، ونواه Node.js، وبرمجية مساحة المستخدم (userspace code).

يمكن تفعيل التتبع بواسطة راية سطر الأوامر ‎--trace-event-categories أو باستخدام وحدة trace_events. وتقبل راية ‎‎--‎trace-event-categories قائمة بأسماء الفئات المفصولة بفاصلات.

والفئات المتاحة هي:

    • node - عنصر نائب (placeholder) فارغ.

    • node.async_hooks - يتيح التقاط بيانات التتبع async_hooks المُفصَّلة. أحداث async_hooks لها asyncId فريد وخاصيتا triggerId و triggerAsyncId الخاصة.

    • node.bootstrap - يتيح التقاط معالم إقلاع Node.js.

    • node.fs.sync - يتيح التقاط بيانات التتبع لتوابع مُزامَنة نظام الملفات.

    • node.perf - يتيح التقاط قياسات واجهة تطبيقات الأداء (Performance API).

        ◦ node.perf.usertiming - يتيح التقاط قياسات وعلامات توقيت المستخدم لواجهة تطبيقات الأداء (Performance API User Timing) فقط.

        ◦ node.perf.timerify - يتيح التقاط قياسات Performance API timerify فقط.

    • node.promises.rejections - يتيح التقاط بيانات التتبع متتبعًا عدد مرات رفض Promise غير المعالجة و handled-after-rejections.

    • node.vm.script - يتيح التقاط بيانات التتبع لتوابع وحدة vm مثل runInNewContext()‎ و runInContext()‎ و runInThisContext()

    • v8 - أحداث V8 ذات صلة بـ GC، والترجمة (compiling)، والتنفيذ.

تكون الفئات node و node.async_hooks و v8 مفعلة بشكل افتراضي.

node --trace-event-categories v8,node,node.async_hooks server.js

تتطلب الإصدارات السابقة من Node.js استخدام الراية ‎--trace-events-enabled لتفعيل أحداث التتبع. وقد أزيل هذا الشرط. ومع ذلك، يمكن استخدام الراية ‎--traceevents-enabled وستُفعِّل فئات أحداث التتبع node و node.async_hooks و v8 بشكل افتراضي.

node --trace-events-enabled

// يكافئ

node --trace-event-categories v8,node,node.async_hooks

وبدلاً من ذلك، يمكن تفعيل أحداث التتبع باستخدام الوحدة trace_vents:

const trace_events = require('trace_events');
const tracing = trace_events.createTracing({ categories: ['node.perf'] });
tracing.enable();  // يتيح التقاط تتبع الحدث للفئة'node.perf'

// التشغيل

tracing.disable();  // إيقاف التقاط تتبع الحدث للفئة'node.perf'

سيؤدي تشغيل Node.js مع تفعيل التتبع إلى إنتاج ملفات السجل التي يمكن فتحها في علامة التبويب chrome://tracing من المتصفح Chrome. ويسمى ملف التسجيل افتراضياً node_trace. ${rotation}.log، حيث ‎${rotation}‎ هو معرّف تزايد تدوير السجل. ,يمكن تحديد نمط مسار الملف باستخدام --trace-event-file-pattern والذي يقبل سلسلة قالب تدعم ‎${rotation}‎ و ‎${pid}‎. فعلى سبيل المثال:

node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js

بدءا من إصدار Node.js 10.0.0، يستخدم نظام التتبع نفس مصدر الوقت المستخدم من قبل ‎process.hrtime()‎ ولكن يعبَّر عن الختم الزمني لوحدة trace-event بالميكروثانية، على عكس process.hrtime()‎ الذي يُعيده بالنانوثانية.

وحدة 'trace_vents'

أُضيفت مع الإصدار: v10.0.0.

الكائن 'Tracing'

أُضيف مع الإصدار: v10.0.0.

ويستخدم الكائن Tracing لتفعيل أو تعطيل التتبع لمجموعات من الفئات. ويستخدم التابع  trace_events.createTracing()‎ لإنشاء كائنات مماثلة.

ويكون الكائن Tracing معطلًا عند إنشاءه. يضيف استدعاء التابع tracing.enable()‎ الفئات إلى مجموعة من فئات أحداث التتبع المُفعَّلة. ويُزيل استدعاء التابع tracing.disable()‎ الفئات من مجموعة من فئات أحداث التتبع المُفعَّلة.

tracing.categories

أُضيف مع الإصدار: v10.0.0.

    • القيمة المُعادة: من النوع <string>.

قائمة مفصولة بفاصلات تحتوي على فئات أحداث التتبع التي يغطيها كائن Tracing هذا.

tracing.disable()‎

أُضيف مع الإصدار: v10.0.0.

يعطِّل كائن Tracing هذا.

ستتعطل فقط فئات أحداث التتبع غير المشمولة من قِبَل كائنات Tracing المُفعَّلة الأخرى وغير المحددة بواسطة الراية ‎--trace-event-categories.

const trace_events = require('trace_events');
const t1 = trace_events.createTracing({ categories: ['node', 'v8'] });
const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] });
t1.enable();
t2.enable();

// طباعة 'node,node.perf,v8'
console.log(trace_events.getEnabledCategories());

t2.disable(); // فقط ستعطل إطلاق فئة 'node.perf'

// طباعة 'node,v8'
console.log(trace_events.getEnabledCategories());

tracing.enable()‎

أُضيف مع الإصدار: v10.0.0.

تفعيل كائن Tracing هذا لمجموعة الفئات التي يغطيها كائن  Tracing.

tracing.enabled

أُضيف مع الإصدار: v10.0.0.

    • من النوع <boolean> وتكون قيمتها true فقط إذا كان الكائن Tracing مُفعَّلًا.

trace_events.createTracing(options)‎

أُضيف مع الإصدار: v10.0.0.

    • options من النوع  <Object>.

        ◦ categories من النوع ‎<string[]>‎ وهي مصفوفة من أسماء فئات التتبع. تُحوَّل القيم المدرجة في المصفوفة إلى سلسلة جبرًا كلما كان ذلك ممكنًا. وسينطلق خطأ إذا كان لا يمكن فرض القيمة.

    • القيمة المُعادة: من النوع <Tracing>.

إنشاء وإعادة كائن Tracing للمجموعة المعطاة من الفئات categories.

trace_events.getEnabledCategories()‎

أُضيف مع الإصدار: v10.0.0.

    • القيمة المُعادة: من النوع <string>.

يُعيد قائمة مفصولة بفاصلات لكل فئات أحداث التتبع المُفعَّلة حالياً. وهو يحدد المجموعة الحالية من فئات أحداث التتبع المُفعَّلة بواسطة اتحاد من جميع كائنات Tracing المُفعَّلة حاليًا مع أي فئة  مُفعَّلة باستخدام الراية  ‎--trace-event-categories.

وبالنظر إلى الملف  test.js أدناه، سيطبع الأمر node --trace-event-categories node.perf test.js على الشاشة 'node.async_hooks,node.perf'.

const trace_events = require('trace_events');
const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] });
const t2 = trace_events.createTracing({ categories: ['node.perf'] });
const t3 = trace_events.createTracing({ categories: ['v8'] });

t1.enable();
t2.enable();

console.log(trace_events.getEnabledCategories());

مصادر