<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 日志 ## 簡介 Laravel 使用[Monolog](https://github.com/Seldaek/monolog)庫,它為各種強大的日志處理提供支持。Laravel 使配置這些處理程序變得簡單,允許混合并匹配它們自定義的應用程序日志處理。 ## 配置 所有的應用程序日志系統配置都位于`config/logging.php`配置文件中。 默認情況下,Laravel 將使用`stack`去記錄日志消息。`stack 通道被用來將多個日志通道聚合到一個單一的通道中。` #### 配置通道名稱 默認情況下,Monolog 使用與當前環境匹配的『通道名稱』進行實例化,比如`production`或者`local`。要改變這個值,需添加一個`name`選項到你的通道配置中: ``` // 新增 name 選項 'stack' => [ 'driver' => 'stack', 'name' => 'channel-name', 'channels' => ['single', 'slack'], ], ``` #### 可用的通道驅動 名稱 | 描述 ------------- | ------------- `stack` | 一個便于創建『多通道』通道的包裝器 `single` | 單個文件或者基于日志通道的路徑 (`StreamHandler`) `daily` | 一個每天輪換的基于 Monolog 驅動的 `RotatingFileHandler` `slack` | 一個基于 Monolog 驅動的 `SlackWebhookHandler` `syslog` | 一個基于 Monolog 驅動的 `SyslogHandler` `errorlog` | 一個基于 Monolog 驅動的 `ErrorLogHandler` `monolog` | 一個可以使用任何支持 Monolog 處理程序的 Monolog 工廠驅動程序 `custom` | 一個調用指定工廠創建通道的驅動程序 #### 配置 Single 和 Daily 通道 `single`和`daily`通道包含三個可選配置項:`bubble`、`permission`和`locking`。 名稱 | 描述 | 默認值 ------------- | ------------- | ------------- `bubble` | 消息處理后,指示消息是否推送到其他通道 | `true` `permission` | 日志文件權限 | `0644` `locking` | 寫入之前嘗試鎖定日志文件 | `false` #### 配置 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`配置項。`level選項決定了需要被該通道記錄的日志的最低「級別」`。Monolog (一個功能強勁的 Laravel 日志服務)接受定義在[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`消息,它將被發送給系統日志和 Slack,因為`emergency`的級別高于兩個通道的最低級別限制: ``` Log::emergency('The system is down!'); ``` ## 寫日志消息 可以使用`Log`facade 將信息寫入日志。 ``` use Illuminate\\Support\\Facades\\Log; Log::emergency($message); Log::alert($message); Log::critical($message); Log::error($message); Log::warning($message); Log::notice($message); Log::info($message); Log::debug($message); ``` #### 上下文信息 可以將上下文數據數組傳遞給日志方法。這些信息將被格式化,并與日志消息一直顯示: ``` Log::info('User failed to login.', ['id' => $user->id]); ``` ### 寫入指定通道 將消息寫入到默認通道之外的通道中。 ``` // 寫入slack通道 Log::channel('slack')->info('Something happened!'); // 創建一個由多通道構成的按需記錄的堆棧 Log::stack(['single', 'slack'])->info('Something happened!'); ``` ## 高度自定義 Monolog 通道 [參考文檔](https://learnku.com/docs/laravel/5.8/logging/3901#14f57e) ``` // 為通道自定義 Monolog // tap 數組包含自定義 Monolog 實例的類列表 'single' => [ 'driver' => 'single', 'tap' => [App\Logging\CustomizeFormatter::class], 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], // App/Logging/CustomizeFormatter.php <?php namespace App\Logging; class CustomizeFormatter { /** * 自定義給定的日志實例。 * * @param \Illuminate\Log\Logger $logger * @return void */ public function __invoke($logger) { foreach ($logger->getHandlers() as $handler) { $handler->setFormatter(...); } } } // 創建 Monolog 處理器通道 'logentries' => [ 'driver' => 'monolog', 'handler' => Monolog\Handler\SyslogUdpHandler::class, 'with' => [ 'host' => 'my.logentries.internal.datahubhost.company.com', 'port' => '10000', ], ], // Monolog 格式化 'browser' => [ 'driver' => 'monolog', 'handler' => Monolog\Handler\BrowserConsoleHandler::class, 'formatter' => Monolog\Formatter\HtmlFormatter::class, 'formatter_with' => [ 'dateFormat' => 'Y-m-d', ], ], 'newrelic' => [ 'driver' => 'monolog', 'handler' => Monolog\Handler\NewRelicHandler::class, 'formatter' => 'default', ], // 通過工廠創建渠道 'channels' => [ 'custom' => [ 'driver' => 'custom', 'via' => App\Logging\CreateCustomLogger::class, ], ], // App/Logging/CreateCustomLogger.php <?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>

                              哎呀哎呀视频在线观看