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"] []
ディスカッション
コメント一覧
まだ、コメントがありません
新たにPostされたDocs
: ツール関連
キーボードを銀軸から赤軸に買い替えた話
約3年半前、仕事で使うキーボードとしてARCHISS ProgresTouchの ...: スマホ
楽天モバイルがおすすめできない人の特徴とは?
楽天モバイルの最強プランをおすすめできない人の特徴を簡単にまとめてみました また ...: システム開発
なぜスクラムがつらいのか?開発現場が疲弊するのか?スクラムに対する違和感と共に原因を考えてみた
今ではどこの開発現場に行っても、やれスクラムスクラムと、まるでスクラムでもやって ...: Laravel
1つのテーブルを複数のテーブルと結合したい【Laravel10】
1つのテーブルを2つの異なるテーブルに対して結合したいケースがあったのでLara ...: Laravel
Laravelで複数画像アップロード時のvalidateを指定【Laravel10】
jQuery - Image Uploaderを使って、フォームから複数の画像を ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities