يکي از مسائل مهم در امر در امر مديريت سايت اين است که بدانيد کاربران چه کارهايي در سايت انجام مي‌دهند و يا از چه صقحاتي بازديد مي کنند. منظورم تمام بازديدکنندگان نيست. بلکه اموري که در سايت شما اتفاق مي‌افتد و ممکن است نشانه هک شدن سايت يا اعمال خلاف ضابطه از سوي يک کاربر باشد. در دروپال دستور watchdog‌ مسئول اين کار امنيتي است. هر ماژولي مي‌تواند با اين دستور يک رويداد را در جدولي با نام watchdog در ديتابيس دروپال ايجاد کند. و مدير سايت دروپالي مي‌تواند با فعال‌سازي ماژول dblog اين رويدادها را در صفحه "ورودي‌هاي اخير ثبت وقايع"(Recent log entries) در زيرمنوي گزارشات(reports) مشاهده کند.

ساختار کلي:  شکل کلي اين دستور عبارت است از:

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL);

در ساختار اين دستور پارامترهاي زير قابل دريافت است(در بين پرانتز مي‌توان 5 پارامتر به اين فانکشن ارسال نمود):

پارامتر توضيح

$type

دسته‌ پيام را مشخص مي کند. هر عبارتي را مي‌توان به اين پارامتر ارسال کرد، اما بهتر است و معمولاً نام ماژولي که اين دستور را فراخواني کرده است را به اين پارامتر ارسال کنيم تا بعداً بتوان فهميد اين پيام از کدام ماژول ثبت شده است.

$message

پيامي است که بايد در ديتابيس ثبت شود. مي‌توان از دستور ()t براي ثبت پيام با قابليت ترجمه استفاده نمود که اگر پيامي در دروپال به زباني ترجمه شود، پيام ترجمه شده در ديتابيس واقع شود.

$variables

يک آرايه بايد باشد از مقدارهايي متغيري که در پارامتر message ارسال شده است. اگر پيام بدون متغير است و يا قابل ترجمه نيست مي ‌توان اين پارامتر را خالي يا NULL ارسال کرد.

$severity

ميزان اهميت اين پيام را از طريق ارسال يک عدد يا عبارت معادل در اين پارامتر مي‌توانيد تعيين کنيد. يک سري عبارت‌هاي معادل در فايل bootstrap.inc تعريف شده‌اند. البته براساس اولويت‌هايي که در سايت http://www.faqs.org/rfcs/rfc3164.html تعريف شده است. اين عبارت‌هاي معادل عبارتند از:( در هر خط ابتدا عبارت معادل آورده شده و سپس عدد معادل آن عبارت و بعد نام انگليسي وسپس توضيح فارسي)

  • WATCHDOG_EMERG = 0 -- Emergency: اضطراری:  سیستم غیر قابل استفاده است.
  • WATCHDOG_ALERT = 1 -- Alert: هشدار: يک عمل حتماً بايد به طور سريع انجام شود.
  • WATCHDOG_CRITICAL = 2 -- Critical:بحرانی: شرایط بحرانی است .
  • WATCHDOG_ERROR = 3 -- Error: خطا: شرایط خطا.
  • WATCHDOG_WARNING = 4 -- Warning: هشدار: شرایط هشدار دهنده.
  • WATCHDOG_NOTICE = 5 -- Notice: توجه: شرایط طبیعی است، اما قابل توجه است.
  • WATCHDOG_INFO = 6 -- Informational: اطلاعات: پیام های اطلاعاتی.
  • WATCHDOG_DEBUG = 7 -- Debug: اشکال زدایی: پیام در سطح اشکال زدایی.

بهتر است شما هم در هنگام استفاده از دستور watchdog‌ از همين عبارت‌ها استفاده کنيد تا با ديگر ماژول‌ها هماهنگ بوده و به برنامه نويسان ديگر اجازه بدهيد که کد شما را بفهمند.

$link يک لينک که مرتبط با پيام است و مدير سايت از طريق آن لينک مي‌تواند اطلاعات بيشتري از خطا براي رفع آن بيابد.
 

نحوه عملکرد دستور:

اين دستور به تنهايي کار ثبت رويداد در ديتابيس را انجام نمي‌دهد بلکه نقش واسطه را بازي مي‌کند و براي راحتي کار برنامه‌نويس ايجاد شده است. توضيح آنکه در هنگام ثبت رويداد زمان، کاربر، آي پي کاربر، مسير بروز پيام، مسير صفحه ارجاع دهنده و ... همگي ثبت مي‌شوند. اما اين گزينه‌هايي که ذکر شد در تمام شرايط يکي است. لذا ماژول نويس دروپال تنها دستور watchdog را با حداقل دو و حداکثر 5 پارامتر مي‌فرستد و اين دستور گزينه‌هاي لازم براي ديتابيس را به 10 مورد مي‌رساند.
در خط اول دستور اطلاعات کاربر و آدرس ريشه سايت فراخوانده مي‌شود.
در خط بعد فيلدهاي لازم براي ثبت در ديتابيس جمع‌آوري مي‌شود.
از آنجا که معلوم نيست مدير سايت در.پال چه افزونه‌اي را براي ثبت وقايع در ديتابيس فعال نموده است، با اجراي يک حلقه تکرار اين ماژول يافته شده و اطلاعات پيام به آن ارسال مي‌شود. (فهم اين دو سه خط آخري دستور نياز به فهم دو دستور دارد: module_implements و module_invoke)
در صورتي که ماژول dblog براي ثبت وقايع نصب و فعال شده باشد، دستور dblog_watchdog در فايل dblog.module اطلاعات پيام را در ديتابيس ثبت مي‌کند.
 

جايگاه اين دستور:

جايگاه اين دستور فايل includes\bootstrap.inc مي‌باشد و ساختار اين دستور در دروپال 6 به شکل زير است:

 function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) {
  global $user, $base_root;

  // Prepare the fields to be logged
  $log_message = array(
    'type'        => $type,
    'message'     => $message,
    'variables'   => $variables,
    'severity'    => $severity,
    'link'        => $link,
    'user'        => $user,
    'request_uri' => $base_root . request_uri(),
    'referer'     => referer_uri(),
    'ip'          => ip_address(),
    'timestamp'   => time(),
    );

  // Call the logging hooks to log/process the message
  foreach (module_implements('watchdog') as $module) {
    module_invoke($module, 'watchdog', $log_message);
  }
}

 

 

فعال‌سازي:

براي فعال‌سازي اين دستور و ثبت وقايع در ديتابيس بايد ماژول dblog‌ را که جزء ماژول‌هاي هسته دروپال 6 هست فعال نماييد.

 

تعداد امتیازدهندگان: 17292
مسیر کوتاه: rangine.ir/node/1079