基本コンポーネント - ログ

簡単な紹介

   あなたは、アプリケーションを何が起こったかについての詳細を学ぶのを助けるために、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 インスタンスメソッドを:__invokeIlluminate\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(配列 $の設定
    { 
        返す 新しいロガー(...を)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/mzhaox/p/11272001.html