最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel 5.3 學(xué)習(xí)筆記之 錯誤&日志

 更新時間:2016年08月28日 11:49:57   投稿:hebedich  
這篇文章主要介紹了Laravel 5.3 學(xué)習(xí)筆記之 錯誤&日志的相關(guān)資料,需要的朋友可以參考下

1、簡介

Laravel默認(rèn)已經(jīng)為我們配置好了錯誤和異常處理,我們在App\Exceptions\Handler類中觸發(fā)異常并將響應(yīng)返回給用戶。本教程我們將深入探討這個類。

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

2、配置

錯誤詳情顯示

配置文件config/app.php中的debug配置項控制瀏覽器顯示的錯誤詳情數(shù)量。默認(rèn)情況下,該配置項通過.env文件中的環(huán)境變量APP_DEBUG進(jìn)行設(shè)置。

對本地開發(fā)而言,你應(yīng)該設(shè)置環(huán)境變量APP_DEBUG值為true。在生產(chǎn)環(huán)境,該值應(yīng)該被設(shè)置為false。如果在生產(chǎn)環(huán)境被設(shè)置為true,就有可能將一些敏感的配置值暴露給終端用戶。

日志存儲

默認(rèn)情況下,Laravel支持日志方法single, daily, syslog 和 errorlog。如果你想要日志文件按日生成而不是生成單個文件,應(yīng)該在配置文件config/app.php中設(shè)置log值如下:

'log' => 'daily'

日志文件最大生命周期

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

'log_max_files' => 30

日志錯誤級別

使用Monolog的時候,日志消息可能有不同的錯誤級別,默認(rèn)情況下,Laravel將所有日志寫到storage目錄,但是在生產(chǎn)環(huán)境中,你可能想要配置最低錯誤級別,這可以通過在配置文件app.php中通過添加配置項 log_level 來實現(xiàn)。

該配置項被配置后,Laravel會記錄所有錯誤級別大于等于這個指定級別的日志,例如,默認(rèn) log_level 是 error ,則將會記錄error、critical、alert以及emergency級別的日志信息:

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

注:Monolog支持以下錯誤級別 —— debug、info、notice、warning、error、critical、alert、emergency。
自定義Monolog配置

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

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

return $app;

3、異常處理器

所有異常都由類App\Exceptions\Handler處理,該類包含兩個方法:report和render。下面我們詳細(xì)闡述這兩個方法。

report方法

report方法用于記錄異常并將其發(fā)送給外部服務(wù)如Bugsnag或Sentry,默認(rèn)情況下,report方法只是將異常傳遞給異常被記錄的基類,當(dāng)然你也可以按自己的需要記錄異常并進(jìn)行相關(guān)處理。

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

/**
 * 報告或記錄異常
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param \Exception $e
 * @return void
 */
public function report(Exception $e){
  if ($e instanceof CustomException) {
    //
  }

  return parent::report($e);
}

通過類型忽略異常

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

/**
 * A list of the exception types that should not be reported.
 *
 * @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方法負(fù)責(zé)將給定異常轉(zhuǎn)化為發(fā)送給瀏覽器的HTTP響應(yīng),默認(rèn)情況下,異常被傳遞給為你生成響應(yīng)的基類。當(dāng)然,你也可以按照自己的需要檢查異常類型或者返回自定義響應(yīng):

/**
 * 將異常渲染到HTTP響應(yīng)中
 *
 * @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);
}

4、HTTP異常

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

abort(404);

abort方法會立即引發(fā)一個會被異常處理器渲染的異常,此外,你還可以像這樣提供響應(yīng)描述:

abort(403, 'Unauthorized action.');

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

自定義HTTP錯誤頁面

在Laravel中,返回不同HTTP狀態(tài)碼的錯誤頁面很簡單,例如,如果你想要自定義404錯誤頁面,創(chuàng)建一個resources/views/errors/404.blade.php文件,該視圖文件用于渲染程序返回的所有404錯誤。需要注意的是,該目錄下的視圖命名應(yīng)該和相應(yīng)的HTTP狀態(tài)碼相匹配。

5、日志

Laravel基于強大的Monolog庫提供了簡單的日志抽象層,默認(rèn)情況下,Laravel被配置為在storage/logs目錄下每天為應(yīng)用生成日志文件,你可以使用Log門面記錄日志信息到日志中:

<?php

namespace App\Http\Controllers;

use Log;
use App\User;
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);

上下文信息

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

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

訪問底層Monolog實例

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

$monolog = Log::getMonolog();

相關(guān)文章

  • PHP獲取數(shù)組最大值下標(biāo)的方法

    PHP獲取數(shù)組最大值下標(biāo)的方法

    這篇文章主要介紹了PHP獲取數(shù)組最大值下標(biāo)的方法,涉及php中max及array_search等函數(shù)操作數(shù)組的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • WordPress中給媒體文件添加分類和標(biāo)簽的PHP功能實現(xiàn)

    WordPress中給媒體文件添加分類和標(biāo)簽的PHP功能實現(xiàn)

    這篇文章主要介紹了WordPress中給媒體文件添加分類和標(biāo)簽的PHP功能實現(xiàn),同時文中也提到了Media Library Categories這個插件同樣可以達(dá)到目的,需要的朋友可以參考下
    2015-12-12
  • jQuery+PHP實現(xiàn)圖片上傳并提交功能

    jQuery+PHP實現(xiàn)圖片上傳并提交功能

    這篇文章主要介紹了jQuery加PHP實現(xiàn)圖片上傳并提交實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • phpmyadmin配置文件現(xiàn)在需要絕密的短密碼(blowfish_secret)的2種解決方法

    phpmyadmin配置文件現(xiàn)在需要絕密的短密碼(blowfish_secret)的2種解決方法

    安裝完成phpmyadmin之后,再在瀏覽器里輸入:http://localhost/phpmyadmin這時能看到phpmyadmin的管理頁面,不過會提示:“配置文件現(xiàn)在需要絕密的短密碼(blowfish_secret)。”
    2014-05-05
  • PHP實現(xiàn)圖片加水印功能

    PHP實現(xiàn)圖片加水印功能

    這篇文章主要和大家分享幾個php給圖片加水印的幾個自定義函數(shù),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)PHP有一定幫助,需要的可以參考一下
    2022-06-06
  • PHP+Ajax簡單get驗證操作示例

    PHP+Ajax簡單get驗證操作示例

    這篇文章主要介紹了PHP+Ajax簡單get驗證操作,涉及php結(jié)合ajax無刷新提交驗證相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • PHP5.3.1 不再支持ISAPI

    PHP5.3.1 不再支持ISAPI

    今天發(fā)現(xiàn)PHP5.3.1發(fā)布了,但是安裝的時候沒有找到ISAPI模式,安裝后也沒有找到php5isapi.dll這個文件,找了好久,終于弄清楚。
    2010-01-01
  • php cli 小技巧

    php cli 小技巧

    很簡單,特別方便php做一些cli應(yīng)用的調(diào)試,需要的朋友可以參考下
    2013-06-06
  • PHP生成器功能與用法實例分析

    PHP生成器功能與用法實例分析

    這篇文章主要介紹了PHP生成器功能與用法,結(jié)合實例形式分析了PHP生成器的概念、功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-03-03
  • PHP獲取數(shù)組最后一個值的2種方法

    PHP獲取數(shù)組最后一個值的2種方法

    這篇文章主要介紹了PHP獲取數(shù)組最后一個值的2種方法,本文直接給出實現(xiàn)代碼,代碼中包含注釋,需要的朋友可以參考下
    2015-01-01

最新評論

华亭县| 太和县| 长宁县| 大洼县| 阳东县| 宜黄县| 义马市| 湖口县| 尚义县| 榆林市| 平凉市| 潼南县| 银川市| 岳西县| 遂川县| 包头市| 友谊县| 宁乡县| 泊头市| 海城市| 潮安县| 资溪县| 晋江市| 乌什县| 阜城县| 阳城县| 乌兰浩特市| 达州市| 积石山| 保亭| 德州市| 大足县| 淮安市| 贵溪市| 札达县| 吉首市| 寻甸| 濮阳县| 东城区| 特克斯县| 洛阳市|