このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
psr:psr3 [2020/04/29 21:58] y2sunlight [1.2 メッセージ] |
psr:psr3 [2020/09/01 11:52] (現在) tanaka [PSR-3: Logger Interface] |
||
---|---|---|---|
行 3: | 行 3: | ||
--- // | --- // | ||
- | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// |
- | ==== 目次 ==== | + | 関連記事 |
- | * [[psr:top|PHP - PHP標準勧告]] | + | |
+ | * [[psr:top|PSR - PHP標準勧告]] | ||
* [[psr: | * [[psr: | ||
* PSR-3: Logger Interface - ロガーインターフェイス | * PSR-3: Logger Interface - ロガーインターフェイス | ||
行 12: | 行 13: | ||
* [[psr: | * [[psr: | ||
* [[psr: | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
----- | ----- | ||
行 32: | 行 43: | ||
> '' | > '' | ||
- | このドキュメントの「実装者」という言葉は、LoggerInterfaceをログ関連のライブラリまたはフレームワークに実装する人と解釈して下さい。また、ロガーのユーザーのことは「ユーザー」と呼びます。 | + | このドキュメントの |
\\ | \\ | ||
行 40: | 行 51: | ||
==== 1.1 基本 ===== | ==== 1.1 基本 ===== | ||
- | * LoggerInterfaceは、ログを8つのRFC 5424レベル( **debug**, **info**, **notice**, **warning**, | + | |
> [[https:// | > [[https:// | ||
- | * 9番目のメソッド **log** は、最初の引数としてログレベルを受け入れます。ログレベル定数の1つを使用してこのメソッドを呼び出すと、レベル固有のメソッドを呼び出す場合と同じ結果になる必要があります ('' | + | * 9番目のメソッド **log** は、最初の引数としてログレベルを受け入れます。ログレベル定数の1つを使用してこのメソッドを呼び出すと、レベル固有のメソッドを呼び出す場合と同じ結果になる必要があります ('' |
行 51: | 行 62: | ||
==== 1.2 メッセージ ===== | ==== 1.2 メッセージ ===== | ||
- | * すべてのメソッドは、メッセージとして文字列、または < | + | * すべてのメソッドは、メッセージとして文字列、または |
- | * メッセージには、実装者がコンテキスト配列の値で置き換えることができるプレースホルダーが含まれる場合があります ('' | + | * メッセージには、実装者がコンテキスト配列の値で置き換えることができるプレースホルダーが含まれる場合があります ('' |
<?php | <?php | ||
行 94: | 行 105: | ||
==== 1.3 コンテキスト ===== | ==== 1.3 コンテキスト ===== | ||
+ | |||
+ | * すべてのメソッドは、コンテキストデータとして配列を受け入れます。これは、文字列にうまく適合しない異質な情報(extraneous information)を保持するためのものです。配列には何でも含めることができます。実装者は、コンテキストデータをできる限り緩やかに扱う必要があります ('' | ||
+ | |||
+ | * **Exception** オブジェクトがコンテキストデータで渡される場合、それは **' | ||
\\ | \\ | ||
==== 1.4 ヘルパークラスとインターフェイス ===== | ==== 1.4 ヘルパークラスとインターフェイス ===== | ||
+ | |||
+ | * **Psr\Log\AbstractLogger** クラスを使用すると、**LoggerInterface** を拡張して 一般的な **log()** メソッドを実装することで、**LoggerInterface** を非常に簡単に実装できます。他の8つのメソッドは、メッセージとコンテキストを このlog() に転送しています。 | ||
+ | |||
+ | * 同様に、**Psr\Log\LoggerTrait** を使用しても、一般的な log() メソッドを実装するだけで済みます。但し、トレイトはインターフェースを実装できないため、この場合でも **LoggerInterface** を実装する必要があります。 | ||
+ | |||
+ | * **Psr\Log\NullLogger** は、インターフェイスと共に提供されます。それは、ロガーが与えられていない時に、フォールバックとして「ブラックホール」実装を提供するために、インターフェイスのユーザによって使用されます ('' | ||
+ | |||
+ | > '' | ||
+ | |||
+ | * **Psr\Log\LoggerAwareInterface** には **setLogger(LoggerInterface $logger)** メソッドのみが含まれており、フレームワークが任意のインスタンスにロガーを Auto Wiring するために使用できます。 | ||
+ | |||
+ | * **Psr\Log\LoggerAwareTrait** トレイトを使用すると、**LoggerAwareInterface** と同等のインターフェイスを任意のクラスに簡単に実装できます。それは **< | ||
+ | |||
+ | * **Psr\Log\LogLevel** クラスは、8つのログレベルの定数を保持します。 | ||
\\ | \\ | ||
行 103: | 行 132: | ||
===== 2. パッケージ ====== | ===== 2. パッケージ ====== | ||
+ | |||
+ | 説明されているインターフェースとクラス、関連する例外クラス、および実装を検証するためのテストスイートは、[[https:// | ||
\\ | \\ | ||
===== 3. Psr\Log\LoggerInterface ====== | ===== 3. Psr\Log\LoggerInterface ====== | ||
+ | |||
+ | {{tablelayout? | ||
+ | ^メソッド^要約^ | ||
+ | |emergency\\ ($message, array $context = array())|システムが使用できない| | ||
+ | |alert\\ ($message, array $context = array())|すぐに行動を起こす必要がある| | ||
+ | |critical\\ ($message, array $context = array())|危機的な状態| | ||
+ | |error\\ ($message, array $context = array())|すぐに対処する必要はないが、通常はログに記録して監視する必要がある実行時エラー| | ||
+ | |warning\\ ($message, array $context = array())|エラーではない例外的な出来事| | ||
+ | |notice\\ ($message, array $context = array())|正常だが重要なイベント| | ||
+ | |info\\ ($message, array $context = array())|興味深いイベント| | ||
+ | |debug\\ ($message, array $context = array())|詳細なデバッグ情報| | ||
+ | |log($level, | ||
<code php LoggerInterface.php> | <code php LoggerInterface.php> |