ارور لاگینگ ( Error Logging ) در PHP

ارور لاگینگ ( Error Logging ) در PHP

ارور لاگینگ در PHP – به طور کلی ارور لاگینگ زیر مجموعه ای از مدیریت خطا محسوب می شود به طوری که به توسعه دهنده در خطایابی کمک به سزایی می کند .
PHP با مکانیزم خیلی خوبی که دارد به محض دریافت هر گونه خطای Parse Error یا Fatal Error آن را در فایلی با نام php_error.log یا error.log ذخیره می کند
که دارای جزئیاتی شامل نام اسکریپتی که خطا در آن رخ داده ، تاریخ خطا ، دلیل خطا و نوع خطا می باشد .

پیشنهاد می شود قبل از مطالعه این آموزش مقاله گزارش خطا ( Error Reporting ) در PHP را مطالعه کنید تا کار با تابع set_error_handler را یاد بگیرید .

فعال سازی ارور لاگینگ ( Error Logging ) در سرور

به طور پیشفرض ارور لاگینگ در سرور فعال است اما در صورتی که فعال نبود می توانید از کد زیر استفاده کنید ، باید دقت داشته که فقط خطا های Parse و Fatal قابل لاگ گیری می باشد .

فایل لاگ در مسیر اصلی (Root) پروژه ذخیره می شود .

$root_path = $_SERVER['CONTEXT_DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
$error_file_name = 'php_error.log';
$finall_error_path = "{$root_path}{$error_file_name}";

ini_set('log_errors', 'on');
ini_set('error_log', $finall_error_path);

undefined_function();

در خط 8 تابعی را صدا می زنیم که باعث خطای fatal می شود که در نتیجه باید با فایلی با نام php_error.log
در مسیر اصلی ساخته شود و خطا ها را نمایش می دهد .


لاگ گیری از خطا های Notice و Warning برای ارور لاگینگ در PHP

در صورتی که می خواهید از از این نوع خطا ها لاگ بگیرید می توانید از تابع error_log استفاده کنید .

آشنایی با تابع error_log

با استفاده از این تابع می توانید خطای دریافت شده را در مسیری ذخیره کنید یا به ایمیل ارسال کنید که در این آموزش تمرکز مان بر روی ذخیره فایل لاگ بر روی سرور است .

$root_path = $_SERVER['CONTEXT_DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
$error_file_name = 'custom_php_error.log';
$finall_error_path = "{$root_path}{$error_file_name}";

function err_cbk($errcode, $errstr, $errfile, $errline) {
	global $finall_error_path;

	$error_msg = "Error : [Line]: {$errline} [error]: {$errstr} [File]: {$errfile} [Error Code]: {$errcode}";
	echo $error_msg;
	error_log("{$error_msg}\n", 3, $finall_error_path);
}

set_error_handler('err_cbk');

$result = $a;

در کد بالا خط 10 ورودی :

1- پیغام خطا
2- نحوه لاگ ( اینکه به ایمیل ارسال شود یا بر سرور ذخیره شود )
3- ویژگی متناسب با ورودی 2

آرگومان دوم را بر روی عدد 3 بگذارید که قرار است فایل لاگ ذخیره شود و آرگومان سوم مسیر ذخیره شدن لاگ است .

باید فایلی با نام custom_php_error.log مشاهده کنید که خطای Notice را با جزئیات نمایش دهد .

ini_set
error_log

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us