Monolog は、比較的完成度が高く、PHP で簡単に拡張できるロギング コンポーネントです。現在、Symfony、Laravel、CakePHP などの多くの有名な PHP フレームワークにはモノログが組み込まれています。 require monolog/monolog '~1.7' は、github クローン https://github.com/Seldaek/monolog.git またはコンポーザーを通じてインストールできます。 monolog コードの実行結果は以下の通りです。
ErrorHandler.php (mogolog が引き継ぐプログラムのエラーハンドラと例外ハンドラを設定)
Formatter/ (組み込みのログ表示形式)
Handler/ (各種ログ処理)クラス (ファイルの書き込み、電子メールの送信、ソケットの書き込み、キューの書き込みなど)
Logger.php (ログ処理インターフェイス)
Processor/ (組み込みのログ処理クラス)
Registry.php --
例はオンライン エラー ログで使用されており、デフォルトのエラー ログの処理方法
[php] view plain copy
require __DIR__ '/ を置き換えることができます。ベンダー/autoload.php'; -
MonologLogger を使用する; - MonologHandlerBufferHandler を使用する;
- MonologProcessorMemoryUsageProcessor を使用する;
-
$logger = 新しいロガー('error_logger') -
; $stream = new StreamHandler(__DIR__.'/error.log ', Logger::ERROR); -
$logger->pushHandler(new BufferHandler($stream, 10, Logger::DEBUG, true, true));/ /BufferHandler を使用して、同じリクエストのログ数を 10 に設定します。 ファイルを 1 回書きます -
ErrorHandler::register($logger); -
-
//code... -
-
- モノログが完全に書き込まれますオブジェクト指向の考え方に準拠しており、図のルールに準拠した psr-3 prs-4 を備えているため、拡張するのに非常に便利です。
-
- [php]
プレーンコピーを表示
- MonologLogger を使用します。
- MonologHandlerAbstractProcessingHandler を使用します。
-
- class PDOHandler extends AbstractProcessingHandler
- {
- private $initialized = false;
- プライベート $pdo;
- プライベート $ ステートメント;
-
- public function __construct(PDO $pdo, $level = Logger::DEBUG, $bubble = true)
- {
- $this->pdo = $pdo;
- parent::__construct($level, $bubble);
- }
-
- protected function write(array $record)
- {
- if (!$this->initialized) {
- $this->initialize();
- }
-
- $this->statement->execute(array(
- 'channel' => $record['channel'],
- 'レベル' => $record['レベル' ],
- 'message' => $record['formatted'],
- 'time' => $record['datetime']->format('U'),
- ));
- }
-
- private function initialize()
- {
- $this->pdo->exec(
- 'CREATE TABLE IF NOT EXISTS monolog '
- .'(channel VARCHAR(255), level INTEGER、メッセージ長文、時間整数符号なし)'
- );
- $this->statement = $this->pdo->prepare(
- 'モノログに挿入 (チャンネル, レベル, メッセージ, 時間) 値 (:チャンネル, :レベル, :メッセージ, :時間)'
- );
-
- $this->初期化済み = true;
- }