Monologを使ってみたメモ
- Jul 01, 2019
- PHP
n番煎じだが、monolog
を使ってみたのでメモをしておく。まとめ方が雑なのはご愛嬌。
monolog
は composer
で導入する。
$ 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
参考記事
- PHPのロガーMonologを理解しよう https://tech.quartetcom.co.jp/2018/05/31/monolog/
- Seldaek/monolog https://github.com/Seldaek/monolog