<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                * * * * * [TOC] ## 介紹 為了幫助你了解你的應用的運行狀況,Laravel 提供了強大的日志記錄服務,以便你將信息、系統錯誤記錄到文件中,甚至還可以用 Slack 通知你的團隊。 Laravel 的日志系統基于?[Monolog](https://github.com/Seldaek/monolog)?庫,Monolog 提供了多種強力的日志處理程序。在 Laravel 中可以簡單地配置這些處理程序,你可以通過混合使用配置項來自定義應用日志處理程序。 ## 配置 所有日志系統相關的配置都在?`config/logging.php`?文件中。你可以在這個文件中配置應用日志記錄通道,通過查看文件可以了解每個可用通道及其選項。接下來我們會查看一些常見的配置。 默認情況下 Laravel 使用?`stack`?通道記錄信息。?`stack`?通道會將多個日志通道集合到單個通道中,到?[下面的文檔](http://www.hmoore.net/tonyyu/laravel_5_6/786183#_31)了解更多有關構建棧的信息。 #### 配置通道名稱 Monolog 在默認情況下會以當前的環境作為「通道名稱」來實例化,例如?`production`?或者?`local`。可以給你的通道配置添加一個?`name`?選項來更改這個值: ~~~ 'stack' => [ 'driver' => 'stack', 'name' => 'channel-name', 'channels' => ['single', 'slack'], ], ~~~ #### 配置 Slack 通道 `slack`?通道必須要有?`url`?配置項。這個 URL 要和你在 Slack 上配置的?[incoming webhook](https://slack.com/apps/A0F7XDUAZ-incoming-webhooks)?保持一致。 ### 構建日志棧 如之前所提,`stack`?驅動可以把多個通道整合到單個通道中。我們可以通過來看一個上線應用示例配置,來展示如何使用日志棧: ~~~ 'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['syslog', 'slack'], ], 'syslog' => [ 'driver' => 'syslog', 'level' => 'debug', ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => 'critical', ], ], ~~~ 我們來分析一下這份配置。首先,我們注意到?`stack`?通道整合了另外兩個通道,他們的?`channels`?選項分別是:`syslog`?和?`slack`。那么在記錄信息時,這兩個通道都會記錄到該信息。 #### 日志等級 注意到?`syslog`?和?`slack`?通道都有?`level`?這個配置項。該選項用來判斷可以被記錄的信息的最低 「等級」。Laravel 日志服務的基礎庫 Monolog 提供了所有在?[RFC 5424 specification](https://tools.ietf.org/html/rfc5424)?中定義的日志等級:**emergency**、?**alert**、**critical**、?**error**、?**warning**、?**notice**、?**info**?和?**debug**。 我們想象一下用?`debug`?方法來記錄一條信息: ~~~ Log::debug('An informational message.'); ~~~ 那么鑒于我們的配置,`syslog`?通道會將這條信息記錄到系統日志上;然而在?`critical`?等級之下的錯誤信息并不會發送到 Slack;不過如果我們記錄了一條?`emergency`?等級的信息,它將會被同時發送到?`syslog`?通道和?`slack`?通道,因為?`emergency`?等級高于這兩個通道的最低日志等級: ~~~ Log::emergency('The system is down!'); ~~~ ## 記錄日志信息 你可以用?`Log`?[facade](http://www.hmoore.net/tonyyu/laravel_5_6/786058)?記錄信息到日志。就如前面提到的,日志處理程序提供了八種在?[RFC 5424 specification](https://tools.ietf.org/html/rfc5424)?里定義的日志等級:**emergency**、?**alert**、**critical**、?**error**、?**warning**、?**notice**、?**info**?和?**debug**。 ~~~ Log::emergency($message); Log::alert($message); Log::critical($message); Log::error($message); Log::warning($message); Log::notice($message); Log::info($message); Log::debug($message); ~~~ 所以,你可以調用這些方法來記錄相應等級的信息。信息會被寫入?`config/logging.php`?文件中配置的默認的日志通道: ~~~ <?php namespace App\Http\Controllers; use App\User; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show the profile for the given user. * * @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)]); } } ~~~ #### 上下文信息 上下文數據也可以用數組的形式傳遞給日志方法。此上下文數據將被格式化并與日志消息一起顯示: ~~~ Log::info('User failed to login.', ['id' => $user->id]); ~~~ ### 記錄日志到指定通道 有時候你可能希望將日志記錄到非默認通道。你可以使用?`Log`?Facade 中的?`channel`?方法,將日志記錄到應用配置中存在的任何渠道: ~~~ Log::channel('slack')->info('Something happened!'); ~~~ 如果你想按需創建多個渠道的日志堆棧,你可以使用?`stack`?方法: ~~~ Log::stack(['single', 'slack'])->info('Something happened!'); ~~~ ## 自定義 Monolog 日志通道 有時你可能需要完全配置 Monolog 現有的通道。例如:你想要為現有通道自定義一個 Monolog?`FormatterInterface`實現。 首先,在頻道配置文件中定義一個?`tap`?數組。`tap`?數組應該包含所需的類列表,這些類就是 Monolog 實例創建后需要自定義(或開發)的類: ~~~ 'single' => [ 'driver' => 'single', 'tap' => [App\Logging\CustomizeFormatter::class], 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], ~~~ 當你完成了通道中?`tap`?選項的配置,你就可以開始寫 Monolog 實例自定義類了。這個類只需要一個方法:?`__invoke`,這個方法可以接收一個?`Illuminate\Log\Logger`?實例。?`Illuminate\Log\Logger`?實例代理了所有 Monolog 實例底層方法調用: ~~~ <?php namespace App\Logging; class CustomizeFormatter { /** * 自定義日志實例 * * @param \Illuminate\Log\Logger $logger * @return void */ public function __invoke($logger) { foreach ($logger->getHandlers() as $handler) { $handler->setFormatter(...); } } } ~~~ > {提示} 所有的「tap」類可以通過?[服務容器](http://www.hmoore.net/tonyyu/laravel_5_6/786056)?解析,所以它們所需的任何構造函數依賴項都會被自動注入。 ## 創建自定義通道 如果你想定義一個完全自定義的通道以使你可以通過 Monolog 的實例和配置控制它,你可以在你的?`config/logging.php`?配置文件中定義一個?`custom`?驅動類型。此外,你的配置文件應該包含一個?`via`?選項來指定用于創建 Monolog 實例的類: ~~~ 'channels' => [ 'custom' => [ 'driver' => 'custom', 'via' => App\Logging\CreateCustomLogger::class, ], ], ~~~ 當你配置了?`custom`?通道,準備好定義創建 Monolog 實例的類。這個類只需要一個方法:?`__invoke`?,它應該返回一個 Monolog 實例。 ~~~ <?php namespace App\Logging; use Monolog\Logger; class CreateCustomLogger { /** * 創建一個 Monolog 實例。 * * @param array $config * @return \Monolog\Logger */ public function __invoke(array $config) { return new Logger(...); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看