Monologを使ってみたメモ

  • Jul 01, 2019
  • PHP

n番煎じだが、monolog を使ってみたのでメモをしておく。まとめ方が雑なのはご愛嬌。


monologcomposer で導入する。

$ composer require monolog/monolog

以下がサンプルコード。 pushProcessor という関数で出力結果をinterruptすることができる。

<?php
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;

$name = 'name';
$path = './my.log';
$output = "[%datetime%] %level_name%: %message% %context% %extra%\n";

$log = new Logger($name);
$formatter = new LineFormatter($output);
$stream = new StreamHandler($path, Logger::DEBUG);
$stream->setFormatter($formatter);
$log->pushHandler($stream);

$log->pushProcessor(function ($record) {
    if ($record["message"] === "Foo") {
        $record["message"] = 'Hello world!';
    }
    return $record;
});

$log->warning('Foo'); // hello world!
$log->error('fsafds'); // fsafds

ログレベルは以下:

* DEBUG (100): デバッグ情報
* INFO (200): 興味のあるイベント 例) SQLのログなど
* NOTICE (250): 正常だが重大なイベント。
* WARNING (300): エラーではない例外的な発生
* ERROR (400): 即時アクションを必要としないランタイムエラー。通常はログに記録して監視する必要があります。
* CRITICAL (500): 重大な条件 例) アプリケーションコンポーネントが利用不可、予期しない例外が発生
* ALERT (550): 直ちに行動を起こさなければなりません。 例:Webサイト全体が停止している、データベースが利用できないなど。これにより、SMSアラートが表示されて起動します。
* EMERGENCY (600): 緊急:システムは使用できません。

monologは様々な形式で出力することができる。 Handlers, Formatters and Processors


参考記事