monologで簡単にログ出力

ライブラリ

PHPで開発をしていると、ログを出力したい画面は多いかと思います

でもいちいち自分でログ出力クラスを作るのは面倒!

という時に便利なロギングライブラリがあります

monologです

この記事を書いてる時点での最新バージョンはv2.0.2です

インストール

コンポーザーで以下のコマンドを実行

composer require monolog/monolog

ログの出力方法

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
 
require 'vendor/autoload.php';
 
// ロガーを生成
$logger = new Logger('my_logger');
// ハンドラーのセット
$logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));
 
// ログ出力
$logger->info('いでよ!ログ出力ー');

出力結果

/my_app.log

[2020-05-22 12:54:32] my_logger.INFO: いでよ!ログ出力ー [] []

日毎にファイルを作る

monologが便利なのは、簡単に日毎にファイルを分けて作れるところ(RotatingFileHandler)

ずーっと同じファイルに出力していると、どんどんファイルが肥大化しちゃうからね

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
 
require 'vendor/autoload.php';
 
// ロガーを生成(チャネル名の設定)
$logger = new Logger('my_logger');
// 日毎にファイルを作る
$log->pushHandler(new RotatingFileHandler(__DIR__.'/my_app.log',5));
 
// ログ出力
$logger->info('いでよ!ログ出力ー');

出力結果

my_app-2020-05-22.log

[2020-05-22 12:54:32] my_logger.INFO: いでよ!ログ出力ー [] []

RotatingFileHandlerの第二引数を指定すると、自動的に古いファイルを削除してくれる

例えば「5」としておくと、6個目の日付ファイルが生成された時点で、最初の日付のファイルが削除される

変数の出力

プログラム中の変数も出力できる

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
 
require 'vendor/autoload.php';
 
// ロガーを生成(チャネル名の設定)
$logger = new Logger('my_logger');
// ハンドラーのセット
$logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));
 
$array = ['aaa','bbb'];
 
// ログ出力
$logger->info('いでよ!ログ出力と変数!',$array);

出力結果

/my_app.log

[2020-05-22 12:54:32] my_logger.INFO: いでよ!ログ出力と変数! ["aaa","bbb"] []