Yii-logging
Yii-ロギング
Yiiは、高度にカスタマイズ可能で拡張可能なフレームワークを提供します。 このフレームワークを使用すると、さまざまなタイプのメッセージを簡単に記録できます。
メッセージを記録するには、次の方法のいずれかを呼び出す必要があります-
- * Yii :: error()*-致命的なエラーメッセージを記録します。
- * Yii :: warning()*-警告メッセージを記録します。
- * Yii :: info()*-いくつかの有用な情報を含むメッセージを記録します。
- * Yii :: trace()*-メッセージを記録して、コードの実行方法を追跡します。
上記のメソッドは、さまざまなカテゴリでログメッセージを記録します。 彼らは次の関数シグネチャを共有します-
ここで-
- $ message -記録されるログメッセージ
- $ category -ログメッセージのカテゴリ
命名スキームの簡単で便利な方法は、PHP METHODマジック定数を使用することです。 たとえば-
ログターゲットは、yii \ log \ Targetクラスのインスタンスです。 すべてのログメッセージをカテゴリ別にフィルタリングし、ファイル、データベース、または電子メールにエクスポートします。
- ステップ1 *-複数のログターゲットも同様に登録できます。
上記のコードでは、2つのターゲットが登録されています。 最初のターゲットは、すべてのエラー、警告、トレース、および情報メッセージを選択し、データベースに保存します。 2番目のターゲットは、すべてのエラーおよび警告メッセージを管理者の電子メールに送信します。
Yiiは次の組み込みログターゲットを提供します-
- yii \ log \ DbTarget -ログメッセージをデータベースに保存します。
- yii \ log \ FileTarget -ログメッセージをファイルに保存します。
- yii \ log \ EmailTarget -定義済みの電子メールアドレスにログメッセージを送信します。
- yii \ log \ SyslogTarget -PHPを呼び出してログメッセージをsyslogに保存します 関数syslog()。
デフォルトでは、ログメッセージは次のようにフォーマットされています-
- *ステップ2 *-この形式をカスタマイズするには、 *yii \ log \ Target
- $ prefix* プロパティを設定する必要があります。 例えば。
上記のコードスニペットは、すべてのログメッセージの前に現在のユーザーIDを付けるようにログターゲットを構成します。
- デフォルトでは、ログメッセージには、これらのグローバルPHP変数$ _GET、$ _ POST、$ _ SESSION、$ _ COOKIE、$ _ FILES、および$ _SERVERの値が含まれます。 この動作を変更するには、含める変数の名前で *yii \ log \ Target
- $ logVars* プロパティを構成する必要があります。
すべてのログメッセージは、ロガーオブジェクトによって配列に保持されます。 ロガーオブジェクトは、配列が特定の数のメッセージ(デフォルトは1000)を蓄積するたびに、記録されたメッセージをログターゲットにフラッシュしました。
ステップ3 *-この数値をカスタマイズするには、 flushIntervalプロパティ*を呼び出す必要があります。
ロガーオブジェクトがログメッセージをログターゲットにフラッシュしても、それらはすぐにはエクスポートされません。 エクスポートは、ログターゲットが特定の数のメッセージを蓄積するときに発生します(デフォルトは1000)。
ステップ4 *-この数値をカスタマイズするには、 *exportInterval プロパティを構成する必要があります。
ステップ5 *-次に、 *config/web.php ファイルをこの方法で変更します。
上記のコードでは、ログアプリケーションコンポーネントを定義し、 flushInterval および exportInteval プロパティを1に設定して、すべてのログメッセージがログファイルにすぐに表示されるようにします。 また、ログターゲットのレベルプロパティも省略します。 つまり、すべてのカテゴリ(エラー、警告、情報、トレース)のログメッセージがログファイルに表示されます。
- ステップ6 *-次に、SiteControllerでactionLog()という関数を作成します。
上記のコードでは、異なるカテゴリの4つのログメッセージをログファイルに書き込むだけです。
ステップ7 *-WebブラウザーのアドレスバーにURL *http://localhost:8080/index.php?r = site/log を入力します。 ログメッセージは、app.logファイルのapp/runtime/logsディレクトリに表示されます。