وحدة التحكم
[مستقر: 2 - مستقر]
مستقر: 2 الاستقرار: 2 - مستقر
كود المصدر: lib/console.js
توفر وحدة node:console وحدة تحكم تصحيح أخطاء بسيطة تشبه آلية وحدة تحكم JavaScript التي توفرها متصفحات الويب.
تقوم الوحدة بتصدير مكونين محددين:
- فئة
Consoleمع طرق مثلconsole.log()وconsole.error()وconsole.warn()التي يمكن استخدامها للكتابة إلى أي دفق Node.js. - مثيل
consoleعام تم تكوينه للكتابة إلىprocess.stdoutوprocess.stderr. يمكن استخدامconsoleالعام دون استدعاءrequire('node:console').
تحذير: طرق كائن وحدة التحكم العامة ليست متزامنة باستمرار مثل واجهات برمجة التطبيقات للمتصفح التي تشبهها، ولا هي غير متزامنة باستمرار مثل جميع تدفقات Node.js الأخرى. يجب على البرامج التي ترغب في الاعتماد على السلوك المتزامن / غير المتزامن لوظائف وحدة التحكم أن تكتشف أولاً طبيعة دفق وحدة التحكم الداعم. وذلك لأن الدفق يعتمد على النظام الأساسي الأساسي وتكوين الدفق القياسي للعملية الحالية. انظر ملاحظة حول إدخال/إخراج العملية لمزيد من المعلومات.
مثال باستخدام console العام:
console.log('hello world');
// يطبع: hello world، إلى stdout
console.log('hello %s', 'world');
// يطبع: hello world، إلى stdout
console.error(new Error('Whoops, something bad happened'));
// يطبع رسالة الخطأ وتتبع المكدس إلى stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// يطبع: Danger Will Robinson! Danger!، إلى stderrمثال باستخدام فئة Console:
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// يطبع: hello world، إلى out
myConsole.log('hello %s', 'world');
// يطبع: hello world، إلى out
myConsole.error(new Error('Whoops, something bad happened'));
// يطبع: [Error: Whoops, something bad happened]، إلى err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// يطبع: Danger Will Robinson! Danger!، إلى errالفئة: Console
[السجل]
| الإصدار | التغييرات |
|---|---|
| v8.0.0 | سيتم الآن تجاهل الأخطاء التي تحدث أثناء الكتابة إلى التدفقات الأساسية افتراضيًا. |
يمكن استخدام الفئة Console لإنشاء مسجل بسيط مع تدفقات إخراج قابلة للتكوين ويمكن الوصول إليها باستخدام require('node:console').Console أو console.Console (أو نظيراتها المفككة):
import { Console } from 'node:console';const { Console } = require('node:console');const { Console } = console;new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[السجل]
| الإصدار | التغييرات |
|---|---|
| v14.2.0, v12.17.0 | تم تقديم خيار groupIndentation. |
| v11.7.0 | تم تقديم خيار inspectOptions. |
| v10.0.0 | يدعم منشئ Console الآن وسيطة options ، وتم تقديم خيار colorMode. |
| v8.0.0 | تم تقديم خيار ignoreErrors. |
options<Object>stdout<stream.Writable>stderr<stream.Writable>ignoreErrors<boolean> تجاهل الأخطاء عند الكتابة إلى التدفقات الأساسية. افتراضي:true.colorMode<boolean> | <string> قم بتعيين دعم الألوان لمثيلConsoleهذا. يؤدي التعيين إلىtrueإلى تمكين التلوين أثناء فحص القيم. يؤدي التعيين إلىfalseإلى تعطيل التلوين أثناء فحص القيم. يؤدي التعيين إلى'auto'إلى جعل دعم الألوان يعتمد على قيمة الخاصيةisTTYوالقيمة التي تم إرجاعها بواسطةgetColorDepth()في التدفق المعني. لا يمكن استخدام هذا الخيار إذا تم تعيينinspectOptions.colorsأيضًا. افتراضي:'auto'.inspectOptions<Object> يحدد الخيارات التي يتم تمريرها إلىutil.inspect().groupIndentation<number> قم بتعيين مسافة بادئة المجموعة. افتراضي:2.
ينشئ Console جديدًا مع مثيل أو مثيلين من التدفق القابل للكتابة. stdout هو تدفق قابل للكتابة لطباعة سجل أو إخراج معلومات. يستخدم stderr للتحذير أو إخراج الخطأ. إذا لم يتم توفير stderr ، فسيتم استخدام stdout لـ stderr.
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;
const output = createWriteStream('./stdout.log');
const errorOutput = createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5console العام هو Console خاص يتم إرسال إخراجه إلى process.stdout و process.stderr. وهو مكافئ للاتصال بـ:
new Console({ stdout: process.stdout, stderr: process.stderr });console.assert(value[, ...message])
[التاريخ]
| الإصدار | التغييرات |
|---|---|
| v10.0.0 | أصبح التنفيذ الآن متوافقًا مع المواصفات ولا يطرح أي استثناءات بعد الآن. |
| v0.1.101 | أُضيف في: v0.1.101 |
value<any> القيمة التي يتم اختبارها لكونها قيمة صحيحة....message<any> تُستخدم جميع الوسائط بخلافvalueكرسالة خطأ.
console.assert() يكتب رسالة إذا كانت value خاطئة أو تم حذفها. يكتب رسالة فقط ولا يؤثر على التنفيذ بأي شكل آخر. يبدأ الإخراج دائمًا بـ "Assertion failed". إذا تم توفير message، فسيتم تنسيقه باستخدام util.format().
إذا كانت value صحيحة، فلا يحدث شيء.
console.assert(true, 'لا يفعل شيئًا');
console.assert(false, 'يا للأسف %s عمل', 'لم');
// Assertion failed: يا للأسف لم يعمل
console.assert();
// Assertion failedconsole.clear()
أُضيف في: v8.3.0
عندما يكون stdout هو TTY، ستحاول استدعاء console.clear() مسح TTY. عندما لا يكون stdout هو TTY، لا يفعل هذا الأسلوب أي شيء.
يمكن أن يختلف التشغيل المحدد لـ console.clear() عبر أنظمة التشغيل وأنواع المحطات الطرفية. بالنسبة لمعظم أنظمة تشغيل Linux، تعمل console.clear() بشكل مشابه لأمر shell clear. في نظام التشغيل Windows، ستقوم console.clear() بمسح الإخراج فقط في منفذ عرض المحطة الطرفية الحالي لملف Node.js الثنائي.
console.count([label])
أُضيف في: v8.3.0
label<string> تسمية العرض للعداد. افتراضي:'default'.
يحافظ على عداد داخلي خاص بـ label ويخرج إلى stdout عدد المرات التي تم فيها استدعاء console.count() مع label المحدد.
> console.count()
default: 1
undefined
> console.count('default')
default: 2
undefined
> console.count('abc')
abc: 1
undefined
> console.count('xyz')
xyz: 1
undefined
> console.count('abc')
abc: 2
undefined
> console.count()
default: 3
undefined
>console.countReset([label])
أضيف في: الإصدار 8.3.0
label<string> تسمية العرض للعداد. افتراضي:'default'.
يعيد ضبط العداد الداخلي الخاص بـ label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>console.debug(data[, ...args])
[السجل]
| الإصدار | التغييرات |
|---|---|
| الإصدار 8.10.0 | console.debug الآن هو اسم مستعار لـ console.log. |
| الإصدار 8.0.0 | أضيف في: الإصدار 8.0.0 |
الدالة console.debug() هي اسم مستعار لـ console.log().
console.dir(obj[, options])
أضيف في: الإصدار 0.1.101
obj<any>options<Object>showHidden<boolean> إذا كانتtrueفسيتم عرض الخصائص غير القابلة للتعداد والرمزية للكائن أيضًا. افتراضي:false.depth<number> يخبرutil.inspect()عدد المرات التي يجب أن يتكرر فيها أثناء تنسيق الكائن. هذا مفيد لفحص الكائنات الكبيرة المعقدة. لجعله يتكرر إلى أجل غير مسمى، مررnull. افتراضي:2.colors<boolean> إذا كانتtrue، فسيتم تصميم الإخراج باستخدام رموز ألوان ANSI. الألوان قابلة للتخصيص؛ انظر تخصيص ألوانutil.inspect(). افتراضي:false.
يستخدم util.inspect() على obj ويطبع السلسلة الناتجة إلى stdout. تتجاوز هذه الدالة أي دالة inspect() مخصصة محددة في obj.
console.dirxml(...data)
[سجل التغييرات]
| الإصدار | التغييرات |
|---|---|
| v9.3.0 | console.dirxml الآن يستدعي console.log لوسائطه. |
| v8.0.0 | تمت إضافته في: v8.0.0 |
-
...data <any>
يستدعي هذا الأسلوب console.log() ويمرر له الوسائط المستلمة. لا ينتج هذا الأسلوب أي تنسيق XML.
console.error([data][, ...args])
تمت إضافته في: v0.1.100
يطبع إلى stderr مع سطر جديد. يمكن تمرير وسائط متعددة، مع استخدام الأول كالرسالة الرئيسية وجميع الرسائل الإضافية كقيم استبدال مشابهة لـ printf(3) (يتم تمرير جميع الوسائط إلى util.format()).
const code = 5;
console.error('error #%d', code);
// يطبع: error #5, إلى stderr
console.error('error', code);
// يطبع: error 5, إلى stderrإذا لم يتم العثور على عناصر التنسيق (مثل %d) في السلسلة الأولى، فسيتم استدعاء util.inspect() على كل وسيطة وسيتم ربط قيم السلسلة الناتجة. راجع util.format() لمزيد من المعلومات.
console.group([...label])
تمت إضافته في: v8.5.0
-
...label <any>
يزيد المسافة البادئة للأسطر اللاحقة بمقدار مسافات لطول groupIndentation.
إذا تم توفير واحد أو أكثر من label، فسيتم طباعتها أولاً بدون المسافة البادئة الإضافية.
console.groupCollapsed()
تمت إضافته في: v8.5.0
اسم مستعار لـ console.group().
console.groupEnd()
تمت إضافته في: v8.5.0
يقلل المسافة البادئة للأسطر اللاحقة بمقدار مسافات لطول groupIndentation.
console.info([data][, ...args])
أضيف في: v0.1.100
الدالة console.info() هي اسم بديل لـ console.log().
console.log([data][, ...args])
أضيف في: v0.1.100
تطبع إلى stdout مع سطر جديد. يمكن تمرير وسيطات متعددة، مع استخدام الأولى كالرسالة الأساسية واستخدام جميع الوسيطات الإضافية كقيم استبدال مشابهة لـ printf(3) (يتم تمرير جميع الوسيطات إلى util.format()).
const count = 5;
console.log('count: %d', count);
// تطبع: count: 5، إلى stdout
console.log('count:', count);
// تطبع: count: 5، إلى stdoutراجع util.format() لمزيد من المعلومات.
console.table(tabularData[, properties])
أضيف في: v10.0.0
tabularData<أي نوع>properties<string[]> خصائص بديلة لإنشاء الجدول.
حاول إنشاء جدول بأعمدة خصائص tabularData (أو استخدم properties) وصفوف tabularData وسجلها. يعود إلى مجرد تسجيل الوسيطة إذا تعذر تحليلها كجدول.
// لا يمكن تحليل هذه كبيانات جدولية
console.table(Symbol());
// Symbol()
console.table(undefined);
// undefined
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │ a │ b │
// ├─────────┼─────┼─────┤
// │ 0 │ 1 │ 'Y' │
// │ 1 │ 'Z' │ 2 │
// └─────────┴─────┴─────┘
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
// ┌─────────┬─────┐
// │ (index) │ a │
// ├─────────┼─────┤
// │ 0 │ 1 │
// │ 1 │ 'Z' │
// └─────────┴─────┘console.time([label])
تمت الإضافة في: v0.1.104
label<string> الافتراضي:'default'
يبدأ عدادًا زمنيًا يمكن استخدامه لحساب مدة عملية. يتم تعريف العدادات الزمنية بواسطة label فريد. استخدم نفس label عند استدعاء console.timeEnd() لإيقاف العداد الزمني وإخراج الوقت المنقضي بوحدات زمنية مناسبة إلى stdout. على سبيل المثال، إذا كان الوقت المنقضي 3869 مللي ثانية، فإن console.timeEnd() يعرض "3.869s".
console.timeEnd([label])
[السجل]
| الإصدار | التغييرات |
|---|---|
| v13.0.0 | يتم عرض الوقت المنقضي بوحدة زمنية مناسبة. |
| v6.0.0 | لم تعد هذه الطريقة تدعم الاستدعاءات المتعددة التي لا تتطابق مع استدعاءات console.time() الفردية؛ انظر أدناه للحصول على التفاصيل. |
| v0.1.104 | تمت الإضافة في: v0.1.104 |
label<string> الافتراضي:'default'
يوقف عدادًا زمنيًا تم تشغيله مسبقًا عن طريق استدعاء console.time() ويطبع النتيجة إلى stdout:
console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438msconsole.timeLog([label][, ...data])
تمت الإضافة في: v10.7.0
بالنسبة للعداد الزمني الذي تم تشغيله مسبقًا عن طريق استدعاء console.time()، يطبع الوقت المنقضي ووسائط data الأخرى إلى stdout:
console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process');console.trace([message][, ...args])
تمت الإضافة في: v0.1.104
يطبع إلى stderr السلسلة 'Trace: '، متبوعة بالرسالة المنسقة util.format() وتتبع المكدس إلى الموضع الحالي في التعليمات البرمجية.
console.trace('Show me');
// Prints: (stack trace will vary based on where trace is called)
// Trace: Show me
// at repl:2:9
// at REPLServer.defaultEval (repl.js:248:27)
// at bound (domain.js:287:14)
// at REPLServer.runBound [as eval] (domain.js:300:12)
// at REPLServer.<anonymous> (repl.js:412:12)
// at emitOne (events.js:82:20)
// at REPLServer.emit (events.js:169:7)
// at REPLServer.Interface._onLine (readline.js:210:10)
// at REPLServer.Interface._line (readline.js:549:8)
// at REPLServer.Interface._ttyWrite (readline.js:826:14)console.warn([data][, ...args])
أُضيف في: الإصدار v0.1.100
الدالة console.warn() هي اسم بديل للدالة console.error().
طرق خاصة بالمُدقّق فقط
الأساليب التالية مكشوفة من قبل محرك V8 في واجهة برمجة التطبيقات العامة ولكنها لا تعرض أي شيء ما لم تستخدم بالتزامن مع المُدقّق (علامة --inspect).
console.profile([label])
أُضيف في: الإصدار v8.0.0
label<سلسلة نصية>
لا يعرض هذا الأسلوب أي شيء ما لم يتم استخدامه في المُدقّق. يبدأ الأسلوب console.profile() ملف تعريف وحدة المعالجة المركزية (CPU) لجافاسكربت مع تسمية اختيارية حتى يتم استدعاء console.profileEnd(). ثم تتم إضافة الملف الشخصي إلى لوحة الملف الشخصي في المُدقّق.
console.profile('MyLabel');
// بعض الكود
console.profileEnd('MyLabel');
// يضيف الملف الشخصي 'MyLabel' إلى لوحة الملفات الشخصية في المُدقّق.console.profileEnd([label])
أُضيف في: الإصدار v8.0.0
label<سلسلة نصية>
لا يعرض هذا الأسلوب أي شيء ما لم يتم استخدامه في المُدقّق. يوقف جلسة تحديد وحدة المعالجة المركزية (CPU) لـ JavaScript الحالية إذا تم بدء واحدة ويطبع التقرير إلى لوحة الملفات الشخصية في المُدقّق. انظر console.profile() للحصول على مثال.
إذا تم استدعاء هذا الأسلوب بدون تسمية، فسيتم إيقاف الملف الشخصي الذي تم بدؤه مؤخرًا.
console.timeStamp([label])
أُضيف في: الإصدار v8.0.0
label<سلسلة نصية>
لا يعرض هذا الأسلوب أي شيء ما لم يتم استخدامه في المُدقّق. يضيف الأسلوب console.timeStamp() حدثًا بالتسمية 'label' إلى لوحة الجدول الزمني في المُدقّق.