簡単な紹介
あなたは、アプリケーションを何が起こったかについての詳細を学ぶのを助けるために、Laravelはチーム全体に通知するために、ログファイル、システム・エラー・ログ、でもスラックに情報を記録するための強力なサービスを提供しています。
ログエンジンの下で、Laravelはあなたがそれらを介して、独自のログ処理アプリケーションをカスタマイズすることができ、強力なログプロセッサのさまざまなを提供するために、モノローグログインライブラリを統合しました。
コンフィギュレーション
すべてのシステム構成アプリケーションログは、設定ファイルに保存され config/logging.php
たファイルは、アプリケーションログチャンネルを設定することができますので、利用可能なチャンネルとその設定項目のそれぞれを確認してください。ここでは、設定項目のいくつかを見てみましょう。
デフォルトでは、Laravelは使用 stack
情報をログに記録するチャンネルをstack
チャンネルがより構築する上で、単一チャネルのログに複数のチャネルを集約するために使用されている stack
情報は、お読みください。
チャンネル名を設定
デフォルトでは、モノローグは、現在の「チャンネル名」環境一致インスタンス化によって、例えば production
、または local
、この値を変更するには、追加 name
設定をチャンネルにアイテムを:
'スタック' => [ 'ドライバ' => 'スタック'、 '名前' => 'チャンネル名'、 'チャンネル' => '単一'、 'スラック'] ] 、
実効チャネルドライバのリスト
名前 | 説明 |
---|---|
stack |
「マルチチャンネル」のチャンネルアグリゲータを作成するために使用されます |
single |
単一ファイル/パス・チャネル・ログに基づいて、( StreamHandler ) |
daily |
ベースの RotatingFileHandler モノローグは、ログパーティションのサイズ日間で駆動 |
slack |
ベースの SlackWebhookHandler モノローグドライブ |
syslog |
ベースの SyslogHandler モノローグドライブ |
errorlog |
ベースの ErrorLogHandler モノローグドライブ |
monolog |
ドライブへのモノローグは、あなたがモノローグサポートされているすべてのプロセッサを使用することができます |
custom |
チャンネル変更を作成するために、指定したドライブを呼び出し |
注意:ビューの高度なカスタムドキュメント学習チャンネル
monolog
とcustom
ドライブを。
シングルチャネル構成とDaily
single
そして、 daily
チャンネルは3つのオプションの設定ありbubble
:アイテムを、permission
と locking
。
名前 | 説明 | デフォルト値 |
---|---|---|
bubble |
他のチャンネルに加工された後、メッセージがバブリングかどうかを示します | true |
permission |
ファイルのパーミッションをログに記録 | 644 |
locking |
ログファイルは、それをロックしようとするために書かれる前に | false |
スラックチャネル構成
slack
チャネルは、必要 url
な構成アイテム、URLを、あなたはスラックチームを構成する必要があるURLの一致を要求しました。
ログ・スタックを構築
前述したように、stack
ドライブは、あなたが、あなたは、本番環境の設定で表示される場合があります例を見てみましょうどのように説明するために、一つのチャンネルに複数のチャンネルをログに記録することができます:
'チャネル' => [ 'スタック' => [ 'ドライバ' => 'スタック'、 'チャンネル' => [ 'シスログ'、 'スラック'] ] 、 'シスログ' => [ 'ドライバ' => ' syslogの」、 'レベル' => 'デバッグ'、 ]、 'たるみ' => [ 'ドライバ' => 'たるみ'、 'URL' => ENV( 'LOG_SLACK_WEBHOOK_URL')、 'ユーザ名' => 'Laravelログ' 、 '絵文字' => ':ブーム:'、 'レベル' => '重要' ]、 ]、
のは、この構成を分析してみましょう。まず、その注意 stack
を通過する channels
他の二つの重合をエントリーチャンネルを:syslog
と slack
。したがって、2チャンネルの情報を記録する機会を持っているログ情報を、。
ログレベル
上記の例ことに注意してください syslog
と slack
チャネル構成はに表示される level
設定項目、設定項目はログ情報が最も低いチャンネル記録「レベルを達成するために必要であるかを判断します。 " :LaravelはRFC 5424仕様でサポート・サービスに(ローからハイへの)すべてのログログレベルを提供として定義モノローグ、緊急時(緊急、緊急時)、警告(ポップアップ警告)、クリティカル(危険)、エラー(エラー)、警告(警告)、告知(告知、ノート)、情報(情報)とデバッグ(デバッグ)。
したがって、私たちが使用している場合は debug
ログ情報を記録するための方法を:
ログイン ::デバッグ(「情報メッセージを。」);
当社の構成を考えると、syslog
チャンネル情報は、システムログに記録されます。原因エラーメッセージに、しかしない critical
レベル以上、スラックに送信されることはありません。私たちが記録している場合でも、 emergency
情報のレベルをするので、それは、システムログとスラックに送信されます emergency
レベルは2つのチャネルの最小しきい値レベルよりも高いです。
ログイン ::緊急を(「システムがダウンしています!」);
ログ情報を書きます
あなたは使用することができ Log
、緊急、警告、重大、エラー:上記のようにRFC 5424仕様にログシステムログレベルの8種類の定義を提供し、ファサードのログ情報を 、警告、注意事項、情報およびデバッグ:
ログイン ::緊急($エラー)。 ログイン ::警告($エラー)。 ログイン ::クリティカル($エラー)。 ログイン ::エラー($エラー)。 ログイン ::(警告$エラーを)。 ログイン ::予告($エラー)。 ログイン ::情報($エラー)。 ログイン ::デバッグ($エラー)。
したがって、あなたはレベルがログ情報を記録するために、対応する前記の方法のいずれかを呼び出すことができ、デフォルトでは、情報がして、設定ファイルに書き込まれる config/logging.php
ように構成デフォルトチャンネル:
<?PHPの 名前空間のApp \のHttp \コントローラ。 使用のApp \ユーザーを、 使用を照らし\サポート\ファサード\ ログ。 使用のApp \のHttp \コントローラ\コントローラ。 クラス UserControllerでは、拡張コントローラー { / * * *显示指定用户的属性 * * @param int型$ ID * @return応答 * / パブリック 関数 showProfile($のID ) { ログを ::インフォ( 'ユーザのユーザプロファイルを表示します:'。$ ID )。 リターン・ビュー( 'user.profile'、[ 'ユーザー' =>ユーザー:: findOrFail($ ID )]); } }
コンテキスト情報
コンテキスト・データは、アレイ方式でログに送信され、その後、ログ情報はフォーマットされ、一緒に表示されます:
ログイン ::情報( 'ユーザーがログインに失敗しました。'、[ 'ID' => $ユーザー - > ID]);
指定されたチャネルへの書き込み
時には、チャネルではなく、デフォルトのチャネルのアプリケーションに情報を記録することができます。この目的を達成するためには、使用することができます Log
のファサードに channel
設定ファイルを取得する方法チャネルを定義し、ログに書き込ま:
ログイン ::チャネル( 'たるみ') - >インフォメーション( '何かが起こりました!');
あなたが複数のチャネルで構成オンデマンドのログのスタックを作成する場合は、使用することができます stack
方法を:
ログイン ::スタック([ 'シングル'、 'たるみ']) - >インフォ( '何かが起こりました!');
シニアモノローグのカスタムチャネル
カスタムチャネルはモノローグです
時には、あなたが特定のチャンネルでフルコントロールのモノローグの設定が必要になる場合があり、たとえば、あなたがプロセッサにモノローグがカスタムである与えられたチャネル構成与えたいと思うかもしれない FormatterInterface
実装を。
スタートとして、我々はの構成でチャンネル定義 tap
の配列を、 tap
配列は、クラスのリストは、カスタム作成したモノローグインスタンスが必要な場合があります含まれています。
'単' => [ 'ドライバ' => '一'、 'タップ' => [APP \ロギング\ CustomizeFormatter :: クラス ]、 'パス' => STORAGE_PATH( 'ログ/ laravel.log')、 'レベル' => 'デバッグ' ]、
チャンネルに設定された tap
項目の後に、あなたはモノローグのカスタムクラスのインスタンスを定義することができます。このクラスは、のみ取得するために必要とされる Illuminate\Log\Logger
インスタンスメソッドを:__invoke
、Illuminate\Log\Logger
例では、すべての方法が根本的なモノローグインスタンスを呼び出す委譲します。
<?PHPの 名前空間のApp \ロギング。 クラスCustomizeFormatter { / * * *所与ロガーインスタンスをカスタマイズします。 * * @param \を照らし\ログ\ロガー$ロガー * @return無効 * / パブリック 関数 __invoke($ロガー) { foreachの($ロガー - > getHandlers()として $ハンドラ){ $ハンドラ - > setFormatter(... ) ; } } }
注:すべての「タップ」のクラスはサービスコンテナによって解決されているので、彼らは、コンストラクタに頼るために必要なすべてが自動的に挿入されます。
チャネルプロセッサのモノローグを作成します。
モノローグ複数のプロセッサが利用可能であり、いくつかのケースでは、あなたは、これらのチャネルが可能な駆動プロセッサのモノローグのインスタンスでのみ指定されたタイプのログレコードを作成したい monolog
ドライブを作成します。
使用した monolog
ドライブを、handler
設定項目が使用できるオプションのコンストラクタパラメータプロセッサとして、プロセッサインスタンスを指定するために使用される handler_with
設定する設定項目を:
'LOGENTRIES' => [ 'ドライバ' => 'モノローグ'、 'ハンドラ' =>モノローグ\ハンドラ\ SyslogUdpHandler :: クラス、 'handler_with' => [ 'ホスト' =>「my.logentries.internal.datahubhost.company .COM」、 'ポート' => '10000'、 ]、 ]、
モノローグ書式設定ツール
使用 monolog
駆動する場合、モノローグは、 LineFormatter
デフォルトの書式設定ツールとして使用されます。しかし、あなたはまた、使用することができます formatter
し、 formatter_with
設定項目の種類は、着信プロセッサ書式設定ツールをカスタマイズするには:
'ブラウザ' => [ 'ドライバ' => 'モノローグ'、 'ハンドラ' =>モノローグ\ハンドラ\ BrowserConsoleHandler :: クラス、 'フォーマッター' =>モノローグ\フォーマッタ\ HtmlFormatter :: クラス、 'formatter_with' => [ " DATEFORMAT」=> 'YM-D'、 ]、 ]、
あなたは自分のモノローグプロセッサを提供することが可能なフォーマットツールを使用している場合は可能な formatter
項目の値を設定します default
:
'newrelic' => [ 'ドライバ' => 'モノローグ'、 'ハンドラ' =>モノローグ\ハンドラ\ NewRelicHandler :: クラス、 'フォーマッター' => 'デフォルト' ]、
工場を通じてチャンネルを作成します。
あなたがインスタンス化し、設定以上のモノローグ完全に制御ので、完全なカスタムチャネルを定義したい場合は、設定ファイルをすることが可能 config/logging.php
に指定された custom
ドライブタイプ。また、あなたは設定含める必要があります via
モノローグインスタンスを作成するために呼び出されるファクトリクラスを指定する項目を:
'チャンネル' => [ 'カスタム' => [ 'ドライバ' => 'カスタム'、 'を介して' =>アプリケーション\ロギング\のCreateCustomLogger :: クラス、 ]、 ]、
設定し custom
たチャネルを、あなたはモノローグインスタンス定義したクラスを作成することができ、このクラスは、モノローグのインスタンスを返すために唯一の方法が必要です__invoke
:
<?PHPの 名前空間のApp \ロギング。 使用モノローグ\ロガーを。 クラスCreateCustomLogger { / * * *カスタムモノローグインスタンスを作成します。 * * @paramの配列$コンフィグ * @return \モノローグ\ロガー * / パブリック 関数 __invoke(配列 $の設定) { 返す 新しいロガー(...を)。 } }