在使用Laravel框架進行開發過程中,難免會出現各種錯誤或異常。如何快速排除錯誤並解決問題,是基礎開發者面臨的挑戰。本文將為您介紹Laravel報錯的檢查方法,幫助您在開發過程中事半功倍。
一、日誌記錄
Laravel會將日誌資訊依照不同等級(debug、info、notice、warning、error、critical、alert、emergency)分別記錄在不同檔案中。我們可以透過查看日誌檔案來快速找出程式碼中出現的錯誤。
1.1 查看日誌文件
開啟專案根目錄中的storage/logs目錄,可以看到laravel.log文件,這個是系統所有等級日誌的總日誌文件,如果想以某種級別來分集日誌記錄,可在config/logging.php 檔案中進行設定;
在日誌檔案中,可針對時間、流程、等級等條件進行篩選檢視錯誤訊息。具體使用方式如下:
tail -f storage/logs/laravel.log // 监控最新的日志内容,按Ctrl+C停止 cat storage/logs/laravel.log | grep '关键字' // 搜索包含"关键字"的日志内容 tail -n 100 storage/logs/laravel.log | grep '关键字' // 查看最后100行日志是否包含"关键字"
1.2 層級設定
透過Laravel 自帶的目錄app/Exceptions/Handler.php 類,可以看到日誌的層級設定在了report() 函數的在第一個參數中,Laravel 預設的日誌等級為error,這意味著,只有error 等級及以上的日誌會被記錄在app/public/storage/logs/laravel.log 日誌檔案中。
如果想要將warning 級別及以上的日誌都寫入日誌文件,可以在report() 函數的第一個參數中添加起始級別,如下所示:
public function report(Exception $exception) { if ($this->shouldReport($exception)) { Log::channel('daily')->warning('遇到错误啦!', [ 'error' => $exception->getMessage() ]); } parent::report($exception); }
透過Log::channel('daily')->warning()操作,將錯誤訊息與等級一起寫入日誌,並透過shouldReport() 方法判斷是否需要寫入日誌。
二、例外處理
在Laravel應用程式中,拋出自訂例外的方式非常簡單,只需進行以下操作:
2.1 自訂例外
建立一個新的異常類,並繼承Laravel預設的Exception類,如下所示:
namespace AppExceptions; use Exception; class CustomException extends Exception { public function __construct($message = null, $code = 0) { parent::__construct($message, $code); // 调用父类的构造方法 } public function report() { // 记录错误日志 Log::error('CustomException:'.$this->getMessage()); } public function render($request) { return response()->json(['message' => $this->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); } }
在建構方法中,我們可以定義異常訊息及狀態碼,並在report()方法中記錄錯誤日誌,在render() 方法中傳回JSON格式的異常訊息及狀態碼。
當應用程式中出現了 CustomException時,Laravel會自動執行 report() 方法將錯誤訊息記錄到日誌檔案中,並透過 render() 方法傳回異常訊息給前端顯示。
2.2 觸發異常
在程式碼中使用throw new CustomException ()方法即可拋出例外,如下所示:
public function test(Request $request) { // ... if (! check_validate($request->all())) { throw new CustomException('请求参数不正确'); } }
三、錯誤偵錯
在進行開發或測試時,有時需要在程式碼中打出調試資訊來方便查找問題所在,而在Laravel 中,我們可以透過dump() 和dd() 兩個函數來快速輸出偵錯資訊和中斷程式執行結果。
3.1 dump()和dd()
dump() 函數用來列印變數或陣列的內容,不會中斷程式的運作。類似於PHP內建的var_dump()函數。
dd() 函數不僅會列印變數或陣列的內容,還會中斷程式的執行,並且把處理到目前位置的程式碼堆疊以及異常的具體資訊都顯示出來。類似於PHP內建die() 或exit()函數。
Route::get('/test', function () { dump('Hello Laravel!'); return response()->json(['key' => 'value']); }); Route::get('/test2', function () { $array = ['key_one' => 'value_one', 'key_two' => 'value_two']; dd($array); return response()->json(['key' => 'value']); });
在上述程式碼中,我們透過 dump() 和 dd() 方法來列印字串和陣列的內容,使用方式類似於PHP原生函數,非常方便。
四、結語
在Laravel開發過程中,由於各種原因,總是會出現各種各樣的報錯資訊。如何有效率地排查並解決這些錯誤,是每個開發者都必須面對的問題。本文中我們介紹了Laravel日誌記錄、異常處理、錯誤調試等幾個常用的排查方式,希望對您在Laravel中開發有所幫助。
以上是laravel報錯怎麼排查的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Laravel的遷移系統在最新版本中提供了哪些新功能和最佳實踐? 1.新增了nullableMorphs()用於多態關係。 2.引入了after()方法來指定列順序。 3.強調處理外鍵約束以避免孤立記錄。 4.建議優化性能,如適當添加索引。 5.提倡遷移的冪等性和使用描述性名稱。

Laravel的最新版本引入了多個新功能:1.LaravelPennant用於管理功能標誌,允許分階段發布新功能;2.LaravelReverb簡化了實時功能的實現,如實時評論;3.LaravelVite加速了前端構建過程;4.新的模型工廠系統增強了測試數據的創建;5.改進了錯誤處理機制,提供了更靈活的錯誤頁面自定義選項。

SoftleteTeinElelelverisling -Memptry -BraceChortsDevetus -teedeeceteveveledeveveledeecetteecetecetecedelave

laravel10.xisthecurrentversion,offeringNewFeaturesLikeEnumSupportineloQuentModelsAndModersAndImpreverModeModeModelBindingWithenums.theSeupDatesEupDatesEnhanceCodereadability andSecurity andSecurity和butquirecareecarefulecarefulecarefulplanninganninganningalmplementAlimplemplemplemplemplemplempletationForupforupsupflade。

laravelmigrationsStreamLinedAtabasemangementbyallowingbolAlyChemachangeStobEdeDinedInphpcode,whobeversion-controllolleDandShared.here'showtousethem:1)createMigrationClassestodeFinePerationFineFineOperationsLikeCreatingingModifyingTables.2)

要查找最新版本的Laravel,可以訪問官方網站laravel.com並點擊右上角的"Docs"按鈕,或使用Composer命令"composershowlaravel/framework|grepversions"。保持更新有助於提升項目安全性和性能,但需考慮對現有項目的影響。

youshouldupdateTotheLateStlaravelVerverSionForPerformanceImprovements,增強的安全性,newfeatures,BetterCommunitySupport,and long-term-Maintenance.1)績效:Laravel9'Selover9'seloquentormoptimizatizationenenhanceApplicationsPeed.2)secuse:laravel8InIntrododeDodecter.2)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。