婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Laravel 5.5 異常處理 & 錯誤日志的解決

Laravel 5.5 異常處理 & 錯誤日志的解決

熱門標簽:電銷招聘機器人 熱線電話機器人 地圖標注入哪個科目 事業單位如何百度地圖標注 格陵蘭島地圖標注 福泉電話機器人 天津營銷電話機器人加盟代理 太原極信防封電銷卡 南寧crm外呼系統平臺

簡介

Laravel 默認已經為我們配置好了錯誤和異常處理,我們在 App\Exceptions\Handler 類中觸發異常并將響應返回給用戶。

此外,Laravel 還集成了 Monolog 日志庫以便提供各種功能強大的日志處理器,默認情況下,Laravel 已經為我們配置了一些處理器,我們可以選擇單個日志文件,也可以選擇記錄錯誤信息到系統日志。

配置

調試模式

配置文件 config/app.php 中的 debug 配置項表示是否開啟調試模式,調試模式下會將錯誤信息直接暴露給客戶端。

默認情況下,該配置項通過 .env 文件中的環境變量 APP_DEBUG 進行設置,默認值為 true ,即開啟調試模式。

對本地開發而言,你應該設置環境變量 APP_DEBUG 值為 true。在生產環境,該值應該被設置為 false。如果在生產環境被設置為 true,就有可能將一些敏感的信息暴露給終端用戶。

日志存儲

Laravel 支持的日志文件類型為 single, daily, syslog 和 errorlog。

single: 所有的日志信息會記錄到單個日志文件里。

daily:按天生成日志文件。

syslog: 通過系統 syslog 服務處理日志信息。

errorlog: 通過 PHP error_log 處理器處理日志信息。

如果你想要日志文件按天生成而不是生成并記錄到單個文件,應該在配置文件 config/app.php 中設置 log 值如下:

'log' => 'daily'

注:底層處理機制可以參考 Illuminate\Log\LogServiceProvider 中的實現邏輯。

日志文件最大生命周期

使用 daily 日志模式的時候,Laravel 默認最多為我們保留最近 5 天的日志,如果你想要修改這個時間,需要添加一個配置 log_max_files 到 app 配置文件:

'log_max_files' => 30

日志錯誤級別

使用 Monolog 的時候,日志消息可能有不同的錯誤級別,默認情況下,Laravel 將所有級別日志寫到存儲器,但是在生產環境中,你可能想要配置最低錯誤級別,這可以通過在配置文件 app.php 中添加配置項 log_level 來實現。

該配置項被配置后,Laravel 會記錄所有錯誤級別大于等于這個指定級別的日志。

例如,如果配置 log_level 為 error ,則會記錄 error、critical、alert 以及 emergency 級別的日志信息。

'log_level' => env('APP_LOG_LEVEL', 'error'),

注:Monolog 支持以下錯誤級別:debug、info、notice、warning、error、critical、alert、emergency。

自定義 Monolog 配置

如果你想要在應用中完全控制 Monolog 的配置,可以使用configureMonologUsing 方法。你需要在 bootstrap/app.php 文件返回 $app 變量之前調用該方法:

$app->configureMonologUsing(function($monolog) {
  $monolog->pushHandler(...);
});
 
return $app;

自定義頻道名稱

默認情況下,Monolog 會通過一個與當前環境匹配的名字進行實例化,例如 production 或 local。如果想修改這個值,需要添加 log_channel 配置項到配置文件 config/app.php:

'log_channel' => env('APP_LOG_CHANNEL', 'my-app-name'),

異常處理器

所有異常都由類 App\Exceptions\Handler 處理,該類包含兩個方法:report 和 render。

report 方法

report 方法用于記錄異常并將其發送給外部服務如 Bugsnag 或 Sentry。

默認情況下,report 方法只是將異常傳遞給異常被記錄的基類,當然你也可以按自己的需要記錄異常并進行相關處理。

例如,如果你需要以不同方式報告不同類型的異常,可使用 PHP 的 instanceof 操作符:

/**
 * Report or log an exception.
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param \Exception $exception
 * @return void
 */
public function report(Exception $exception)
{
  if ($exception instanceof CustomException) {
    //
  }
  parent::report($exception);
}

report 輔助函數

有時候你可能需要報告一個異常并繼續處理當前請求。輔助函數 report 允許你使用異常處理器的 report 方法快速報告一個異常而不會渲染錯誤頁:

public function isValid($value)
{
  try {
    // Validate the value...
  } catch (Exception $e) {
    report($e);
 
    return false;
  }
}

通過類型忽略異常

異常處理器的 $dontReport 屬性包含一個不會被記錄的異常類型數組,默認情況下,404 錯誤異常不會被寫到日志文件,如果需要的話你可以添加其他異常類型到這個數組:

/**
 * 不應該被報告的異常類型列表.
 *
 * @var array
 */
protected $dontReport = [
  \Illuminate\Auth\AuthenticationException::class,
  \Illuminate\Auth\Access\AuthorizationException::class,
  \Symfony\Component\HttpKernel\Exception\HttpException::class,
  \Illuminate\Database\Eloquent\ModelNotFoundException::class,
  \Illuminate\Validation\ValidationException::class,
];

render 方法

render 方法負責將給定異常轉化為發送給瀏覽器的 HTTP 響應。

默認情況下,異常被傳遞給為你生成響應的基類。當然,你也可以按照自己的需要檢查異常類型或者返回自定義響應:

/**
 * 將異常渲染到HTTP響應中
 *
 * @param \Illuminate\Http\Request $request
 * @param \Exception $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e){
  if ($e instanceof CustomException) {
    return response()->view('errors.custom', [], 500);
  }
 
  return parent::render($request, $e);
}

可報告 可渲染異常

除了在異常處理器的 report 和 render 方法中進行異常類型檢查外,還可以在自定義異常中直接定義 report 和 render 方法。

當異常中存在這些方法時,框架會自動調用它們:

?php
 
namespace App\Exceptions;
 
use Exception;
 
class RenderException extends Exception
{
  /**
   * Report the exception.
   *
   * @return void
   */
  public function report()
  {
    //
  }
 
  /**
   * Render the exception into an HTTP response.
   *
   * @param \Illuminate\Http\Request
   * @return \Illuminate\Http\Response
   */
  public function render($request)
  {
    return response(...);
  }
}

HTTP 異常

有些異常描述來自服務器的 HTTP 錯誤碼,例如,這可能是一個“頁面未找到”錯誤(404),“認證失敗錯誤”(401)亦或是程序出錯造成的500錯誤,為了在應用中生成這樣的響應,可以使用 abort 輔助函數:

abort(404);

abort 輔助函數會立即引發一個會被異常處理器渲染的異常,此外,你還可以像這樣提供響應描述:

abort(403, '未授權操作');

該方法可在請求生命周期的任何時間點使用。

自定義 HTTP 錯誤頁面

在 Laravel 中,返回不同 HTTP 狀態碼的錯誤頁面很簡單,例如,如果你想要自定義 404 錯誤頁面,創建一個 resources/views/errors/404.blade.php 文件,該視圖文件用于渲染程序返回的所有 404 錯誤。

需要注意的是,該目錄下的視圖命名應該和相應的 HTTP 狀態碼相匹配。abort 函數觸發的 HttpException 異常會以 $exception 變量的方式傳遞給視圖:

h2>{{ $exception->getMessage() }}/h2>

日志

Laravel 基于強大的 Monolog 庫提供了簡單的日志抽象層,默認情況下,Laravel 的日志配置是為應用記錄單個日志文件。

日志文件的存儲位置是 storage/logs 目錄。

/*
|--------------------------------------------------------------------------
| Logging Configuration
|--------------------------------------------------------------------------
|
| Here you may configure the log settings for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Settings: "single", "daily", "syslog", "errorlog"
|
*/
 
'log' => env('APP_LOG', 'single'),
 
'log_level' => env('APP_LOG_LEVEL', 'debug'),

應用運行過程中,所有級別大于或等于 debug 的錯誤日志都會被自動記錄到 storage/logs 目錄中。

也可以使用 Log 門面,手動記錄日志信息。

?php
 
namespace App\Http\Controllers;
 
use App\User;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;
 
class UserController extends Controller
{
  /**
   * 顯示指定用戶的屬性
   *
   * @param int $id
   * @return Response
   */
  public function showProfile($id)
  {
    Log::info('Showing user profile for user: '.$id);
    return view('user.profile', ['user' => User::findOrFail($id)]);
  }
}

該日志記錄器提供了 RFC 5424 中定義的八種日志級別:emergency、alert、critical、error、warning、notice、info 和 debug。

Log::emergency($error);
Log::alert($error);
Log::critical($error);
Log::error($error);
Log::warning($error);
Log::notice($error);
Log::info($error);
Log::debug($error);

上下文信息

上下文數據也會以數組形式傳遞給日志方法,然后和日志消息一起被格式化和顯示:

Log::info('User failed to login.', ['id' => $user->id]);

訪問底層 Monolog 實例

Monolog 有多個可用于日志的處理器,如果需要的話,你可以訪問 Laravel 使用的底層 Monolog 實例:

$monolog = Log::getMonolog();

以上這篇Laravel 5.5 異常處理 錯誤日志的解決就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 如何重寫Laravel異常處理類詳解
  • Laravel如何實現適合Api的異常處理響應格式
  • Laravel 修改驗證異常的響應格式實例代碼詳解
  • laravel框架使用FormRequest進行表單驗證,驗證異常返回JSON操作示例
  • Laravel 解決composer相關操作提示php相關異常的問題
  • 解決laravel 表單提交-POST 異常的問題
  • laravel框架 api自定義全局異常處理方法
  • Laravel核心解讀之異常處理的實踐過程
  • 淺談Laravel中使用Slack進行異常通知

標簽:佳木斯 香港 郴州 自貢 寶雞 阿克蘇 通化 金華

巨人網絡通訊聲明:本文標題《Laravel 5.5 異常處理 & 錯誤日志的解決》,本文關鍵詞  Laravel,5.5,異常,處理,amp,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel 5.5 異常處理 & 錯誤日志的解決》相關的同類信息!
  • 本頁收集關于Laravel 5.5 異常處理 & 錯誤日志的解決的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品白丝av| 国内精品自线一区二区三区视频| 91精品国产高清一区二区三区 | 日本欧洲一区二区| 99精品一区二区| 日本高清不卡一区| 国产呦精品一区二区三区网站| 久久99国内精品| 欧美日韩一本到| 欧美性感一类影片在线播放| 在线观看日韩高清av| 国产精品色婷婷久久58| 蜜桃视频在线一区| 成人综合婷婷国产精品久久蜜臀 | 欧美日韩免费高清一区色橹橹| 亚洲精品在线观看视频| 欧美视频一区在线| 亚洲精品欧美激情| 日韩一区二区电影网| 免费人成在线不卡| 狠狠色丁香九九婷婷综合五月 | 奇米色一区二区三区四区| 国产亚洲欧美日韩在线一区| 亚洲精品日日夜夜| 精品一区二区三区免费视频| 在线观看www91| 精品粉嫩aⅴ一区二区三区四区| 亚洲免费视频中文字幕| 午夜精品在线视频一区| 91精品蜜臀在线一区尤物| 麻豆精品视频在线观看视频| 欧美v亚洲v综合ⅴ国产v| 91精品国产福利| 一区二区在线观看视频在线观看| 国产精品理论片| 青青草原综合久久大伊人精品优势| 亚洲激情综合网| 欧美成人乱码一区二区三区| 国产精品996| 欧美成人vps| youjizz国产精品| 韩国v欧美v亚洲v日本v| 国产精品国产精品国产专区不片| 国产福利一区在线| 国产精品入口麻豆九色| 欧美一区二区三区系列电影| 国产酒店精品激情| 91丝袜美腿高跟国产极品老师| 亚洲欧洲日韩av| 欧美一二区视频| 黑人巨大精品欧美一区| 国产嫩草影院久久久久| 久久久久久久综合色一本| 国产馆精品极品| 久久激情综合网| 欧美一级生活片| 成人网在线免费视频| 99久久精品免费看国产免费软件| 国产美女在线精品| 国产精品综合一区二区三区| 精品一区二区在线免费观看| 天天色综合天天| 欧美在线免费观看亚洲| 亚洲激情五月婷婷| 欧美色老头old∨ideo| 这里只有精品视频在线观看| 日韩国产欧美在线播放| 亚洲二区在线观看| 国产综合久久久久影院| 国产成人av一区二区三区在线 | 99re成人精品视频| 欧美成人伊人久久综合网| 国产黄色精品网站| 日韩电影在线观看网站| 亚洲国产视频一区二区| 欧美日韩一区三区四区| 在线成人免费视频| 成人中文字幕在线| 蜜桃视频第一区免费观看| 午夜日韩在线观看| 99精品视频在线观看| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美亚男人的天堂| 91麻豆免费观看| 高清国产一区二区| 亚洲一区二区三区视频在线播放 | 午夜不卡av在线| 日本不卡不码高清免费观看| 国产99久久久国产精品潘金| 中文字幕日韩一区| 国产精品久久久久久久久动漫| 国产亚洲精品中文字幕| 精品国产人成亚洲区| 欧美成人aa大片| 久久久国产一区二区三区四区小说 | 丰满放荡岳乱妇91ww| 成人不卡免费av| 色94色欧美sute亚洲线路二| 国产自产视频一区二区三区| 成人午夜激情片| 中文字幕一区二区不卡| 欧美在线观看18| 欧美午夜精品久久久久久超碰 | 97精品久久久久中文字幕| 国产精品久99| 国产成人精品三级麻豆| 精品裸体舞一区二区三区| 亚洲国产综合色| 国产亚洲视频系列| 国产精品区一区二区三区| 中文字幕中文乱码欧美一区二区| 天堂午夜影视日韩欧美一区二区| 久久久99久久| 国产精品久久久久久久久免费樱桃| 91无套直看片红桃| 欧美男女性生活在线直播观看| 亚洲中国最大av网站| 国产成人精品一区二区三区四区 | 国产精品久久久久久久久快鸭| 亚洲成人动漫在线观看| 久久99国产精品久久99| 久久成人免费网站| 日本一区二区高清| 日本伊人精品一区二区三区观看方式| 麻豆国产精品一区二区三区 | 日韩主播视频在线| 免费看精品久久片| 精品一二三四区| 琪琪一区二区三区| 日韩不卡一区二区| 91在线播放网址| 久久午夜色播影院免费高清| 国产一区激情在线| 日韩欧美一级精品久久| 国产日韩欧美一区二区三区综合| 成人午夜在线免费| 亚洲一级二级在线| 狠狠色丁香久久婷婷综| 91麻豆精品久久久久蜜臀| 亚洲一区二区三区四区在线 | 麻豆视频一区二区| 色噜噜夜夜夜综合网| 蜜臀av亚洲一区中文字幕| 日韩精品在线一区| 中文字幕成人网| 久久国产视频网| 六月婷婷色综合| 午夜精品一区二区三区三上悠亚| 欧美高清视频不卡网| 亚洲免费观看高清完整版在线观看 | 337p亚洲精品色噜噜| 99久久精品国产精品久久| 精品欧美乱码久久久久久| 亚洲精品成人在线| 成人午夜在线播放| 91精品国产高清一区二区三区 | 99视频有精品| 中文字幕不卡一区| 成人免费电影视频| 国产精品每日更新在线播放网址| 亚洲影视在线播放| 成人黄色片在线观看| 在线国产电影不卡| 视频一区欧美日韩| 欧美日韩三级一区二区| 蜜臀久久99精品久久久画质超高清| 欧美性一级生活| 亚洲三级视频在线观看| 成人av影院在线| 亚洲乱码国产乱码精品精的特点 | 亚洲色图19p| 欧美性色黄大片手机版| 亚洲影视在线观看| 91免费在线播放| 欧美在线一二三| 国产精品伦理一区二区| 国产成人亚洲精品青草天美| 日韩一区精品字幕| 666欧美在线视频| 日本韩国欧美在线| 亚洲三级在线看| 337p粉嫩大胆噜噜噜噜噜91av| 麻豆一区二区在线| 欧美日韩精品一区二区三区 | 亚洲欧美欧美一区二区三区| 亚洲bt欧美bt精品777| 亚洲国产精品一区二区www| 国产精品久久一级| 精品剧情在线观看| 精油按摩中文字幕久久| 中文字幕一区日韩精品欧美| 欧美日韩国产中文| 成人爱爱电影网址| 秋霞国产午夜精品免费视频| 亚洲色欲色欲www| 欧美日韩国产综合视频在线观看| jlzzjlzz欧美大全| 美女脱光内衣内裤视频久久网站| 亚洲免费资源在线播放| 日韩欧美精品三级|