ค่าเริ่มต้น (default) ของการแสดงข้อมูลเกี่ยวกับ Error จะถูกเปิดใช้งานไว้อยู่แล้ว เพื่อนๆ ที่เคยใช้ Laravel ก็อาจจะเคยเห็นอยู่บ้าง ^^ แน่นอนว่าตอนที่เรากำลังพัฒนาเว็บของเราก็จะต้องเปิดไว้อยู่แล้ว (เอาให้เห็นกันไปเลยว่า error อะไร) แต่ถ้าจะเอาขึ้น production ก็แนะนำให้ปิดไว้จะดีกว่านะครับ โดยเข้าไปแก้ไขค่า debug ในไฟล์ /app/config/app.php จาก true เป็น false ครับ
[imooh_google_ads]Laravel มี error handler สำหรับจัดการกับ error ทั้งหมด (global) อยู่ที่ไฟล์ app/start/global.php มีหน้าตาประมาณนี้ครับ
App::error(function(Exception $exception) { Log::error($exception); });
โดย Error Handler นี้จะเป็นแบบง่ายที่สุด (basic) ที่จะถูกเรียกใช้เมื่อมี error เกิดขึ้น แต่ไม่ใช่ว่าเราจะทำอะไรกับเค้าไ่มได้ เราสามารถสร้าง Error Handler ที่เฉพาะลงไปอีกได้ครับ อย่างเช่น InvalidUserException หรือ Exception อื่นๆ ที่เราสร้างขึ้นมาเอง
App::error(function(InvalidUserException $exception) { Log::error($exception); return 'Sorry! Something is wrong with this account!'; });
สำหรับ php fatal error ที่เราไม่อยากให้ client เราเห็นเราก็สามารถจัดการได้ว่าจะให้แสดงอะไร โดยระบุไว้ที่ App:fatal จะได้ซ่อนๆ ไว้หน่อย ^^
App::fatal(function($exception) { //เกิด fatal error แล้วจะให้ทำอะไรบ้าง });
ส่วนที่เป็น HTTP Exception จะมีฟังก์ชัน App::abort ให้ใช้ เช่น 404 Page not found, 401 Unauthorized เป็นต้น
App::abort(404, 'Page not found');
401 Unauthorized ข้อความเราสามารถแก้ไขได้นะครับ ^^
App::abort(401, 'ไม่มีสิทธิ์เข้าใช้งาน');
สำหรับ Logging จะมีคลาส Log ให้เราเรียกใช้ฟังก์ชันที่มีไว้ให้ก็จะแบ่งตามระดับของ log ที่เราต้องการ ซึ่งจะมีอยู่ 7 ระดับ คือ debug, info, notice, warning, error, critical และ alert ครับ
Log::info('This is some useful information.'); Log::warning('Something could be going wrong.'); Log::error('Something is really going wrong.');
สามารถอ่านข้อมูลเพิ่มเติมได้ที่ Error & Logging – Laravel PHP Framework