لاگ گیری و خطایابی آسان در زمان توسعه

لاگ گیری و خطایابی آسان در زمان توسعه

در زبان php متغیرها دارای نوع داده نیستند. یعنی ما در هیچ کجای کد مشخص نمی کنیم که متغیر از نوع عدد هست یا رشته. به همین دلیل در طول نوشتن برنامه و الگوریتم ها گاها به این مشکل برمی میخوریم که متغیرها داده ای خلاف انتظار ما می گیرد و به طبع باعث می شود خروجی اشتباه داشته باشیم. همچنین در برنامه هایی که با صفحه سفید مواجه می شوید باید بررسی کنید کدام داده باعث این اتفاق شده و یا حتی با بخش کردن کد و لاگ گرفتن از هر بخش، متوجه شوید کدتان تا کجا تفسیر شده و چه قسمتی باعث صفحه سفید شده است.

همه موارد بالا با لاگ گرفتن (logging) از برنامه براحتی حل می شود و می تواند راه حل سریعی برای خطایابی باشد. این روش در الگوریتم هایی که با داده سر و کار دارند کمک بیشتری می کند.

// log with error_log function
if( !function_exists('log_it') ){
	function log_it() {
		foreach( func_get_args() as $message )
			if( is_array( $message ) || is_object( $message ) )
				error_log( print_r( $message, true ) );
			else
			   error_log( $message );
	}
}
// log in mahdiy.log file
if( !function_exists('logit') ){
	function logit() {
		$log = '';
		foreach( func_get_args() as $message ) {
			if( is_array( $message ) || is_object( $message ) )
				$log .= date('[r] ') . print_r( $message, true ) . "\n";
			else
			   $log .= date('[r] ') . $message . "\n";
		}
		file_put_contents('mahdiy.log', $log, FILE_APPEND );
	}
}

دو تابع بالا جهت لاگ گرفتن از برنامه هستند. تابع اول لاگ را با استفاده از تابع error_log و بصورت پیشفرض در فایل error.log ذخیره می کند. تابع دوم آن را در یک فایل دلخواه (اینجا mahdiy.log) ذخیره می کند. توجه داشته باشید که این توابع بی نهایت ورودی دریافت می کنند، و متناسب با نوع داده آنها را بصورت خوانا ذخیره می کند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.