كيفية تسجيل رسالة الخطأ في Drupal
-
19-09-2019 - |
سؤال
كيفية تسجيل لدينا رسائل الخطأ الخاصة(بالنسبة إلى Ex: خطأ بسبب إدخال تاريخ المستخدم غير صالح) الذي يتم إنشاؤه بي أتش بي برنامج ل خطأ في خطأ Drupal.
المحلول
يمكنك استعمال ال watchdog
وظيفة :
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
نقلا عن الدليل، المعلمات هي:
$type
الفئة التي تنتمي إليها هذه الرسالة.$message
الرسالة لتخزينها في السجل.$variables
صفيف المتغيرات لاستبدالها في الرسالة الموجودة في العرض أو NULL إذا ترجمت الرسالة بالفعل أو غير ممكن للترجمة.$severity
شدة الرسالة، وفقا ل RFC 3164$link
رابط للربط بالرسالة.
ويمكن العثور على مستويات الخطأ في صفحة watchdog_severity_levels
. وبعد لخطأ، سوف تستخدم على الأرجح WATCHDOG_ERROR
, ، أو ربما حتى شيء أكثر أهمية "، اعتمادا على نوع الخطأ.
نصائح أخرى
دروبال 8.
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);
رؤية المزيد من الأمثلة في كيفية تسجيل الرسائل في Drupal 8.
1) في الواقع، WatchDog هي طريقة قياسية لتسجيل أخطاء PHP الخاصة.
2) بدلا من ذلك، إذا كنت بحاجة إلى رؤية رسائل الخطأ على الفور أثناء تصحيح صفحات Drupal الخاصة بك، فقد ترغب في رؤيتها مباشرة / طباعتها مباشرة في الصفحة ذات الصلة - في وحدة تحكم Firebug. في بعض الأحيان يكون هذا مريحا للغاية عندما ترى سجلات مرتبطة بالصفحات. هذا يتطلب - تنمية وحدة، Firebug. التمديد إلى فايرفوكس وربما firephp..
يمكنك استخدام وظيفة DFB () لكتابة رسائل السجل مباشرة إلى وحدة تحكم Firebug العامة.
dfb($input, $label = NULL)
إذا كنت ترغب في الاحتفاظ برسائل سجل Drupal الخاصة بك من وحدة التحكم Normal Firebug، فيمكنك كتابة رسائل إلى دروبال ل firebug. سجل مع FireP () وظيفة:
firep($item, $optional_title)
الوكالة الدولية للطاقة هي الطريقة التي يجب أن تذهب لنظام الإنتاج بلا شك ولكن أثناء تصحيح الأخطاء drupal_set_message
وظيفة مفيدة.
يخرج الرسالة إلى الشاشة حيث يتم عرض الرسائل "العملية الناجحة" عادة (لذلك تأكد من إزالتها قبل أن تعيش الموقع).
في DRUPAL 7 يمكننا تسجيل رسالة بالطريقة التالية:
وظيفة مراقبة DRUPAL التي يمكننا استخدامها لتسجيل رسالة البيانات في قاعدة البيانات، تأكد من أننا تم تمكين الوحدة النمطية الاختيارية لتسجيل قاعدة البيانات في / admin / build / modules.
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
نوع $:الفئة التي تنتمي إليها هذه الرسالة، مثال: PHP، Cron ..، يمكننا تصفية الرسالة حسب النوع.
رسالة $:الرسالة لتخزينها في السجل، مثال: "الوحدة النمطية التالية مفقودة من نظام الملفات: security_review '
المتغيرات $:صفيف المتغيرات لاستبدالها في الرسالة الموجودة في العرض أو NULL إذا ترجمت الرسالة بالفعل أو غير ممكن للترجمة. لجعل الرسائل المترجمة، لا تمر بإدارة متغيرات القيمة الديناميكية في الرسالة في الرسالة باستخدام سلاسل العنصر النائب.
مثال:المراقبة (CG_VOLUNTEER "،" CG "في Form_alter٪ بشكل خاص"، صفيف ("٪" => $ نموذج ['# ID'])، WatchDog_Notice، $ Link = NULL)؛
شدة $شدة الرسالة، يمكن أن تكون السجلات مرشح بواسطة شدة حسب رايتك 3164. القيم المحتملة هي watchdog_error، watchdog_warning، إلخ. لمزيد من المثال انظر https://api.drupal.org/api/drupal/includes bootstrap.inc/function/watchdog/7.x.
رابط $: رابط للربط بالرسالة.
مثال
// للحصول على إشعارات السجلات
watchdog('my_module', $message, array());
// لتسجيل خطأ
watchdog('my_module', $message, array(), WATCHDOG_ERROR);
في Drupal 8 استخدمنا الطريقة التالية:
// للحصول على سجلات إشعار.
\Drupal::logger('my_module')->notice($message);
// لسجل خطأ.
\Drupal::logger('my_module')->error($message);
// لتنبيه، يجب اتخاذ الإجراءات على الفور.
\Drupal::logger('my_module')->alert($message);
// للحصول على رسالة حرجة.
\Drupal::logger('my_module')->critical($message);
// رسائل على مستوى التصحيح.
\Drupal::logger('my_module')->debug($message);
// لحالة الطوارئ، النظام غير قابل للاستخدام.
\Drupal::logger('my_module')->emergency($message);
// للتحذير
\Drupal::logger('my_module')->warning($message);
// رسائل إعلامية.
\Drupal::logger('my_module')->info($message);
أيضا للترجمة، يجب ألا نستخدم وظيفة T ().
\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);
سيتم ترجمة هذا على وقت التشغيل.
مثال :
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
كلاهما watchdog
ل D7 و \Drupal::logger
ل D8 سوف يكتب تسجيل الدخول watchdog
الجدول (في قاعدة البيانات الخاصة بك)، ومع تسجيل البيانات الضخمة, ، يمكنك تخيل تأثير الأداء.
يمكنك استخدام error_log
وظيفة PHP للقيام بذلك (انظر دليل PHP).
error_log("Your message", 3, "/path/to/your/log/file.log");
تحتاج إلى الحصول على إذن بالكتابة في ملف السجل الخاص بك (
/path/to/your/log/file.log
)
// Get logger factory.
$logger = \Drupal::service('logger.factory');
// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
'@nodeType' => $nodeType,
'%userName' => $userName,
]);