【Laravel】ログの操作
https://readouble.com/laravel/6.x/ja/logging.html
設定について
config/logging.php
use Illuminate\Support\Facades\Log;
ログ出力場所
.envに記載のLOG_CHANNELがデフォルトかな
配列を渡せる
code:php
Log::debug('投稿が完了しました。', 'id' => $create->id, 'message' => $create->message);
// 2023-01-07 18:10:25 local.DEBUG: 投稿が完了しました。 {"id":716,"message":"wawawaa"}
チャンネルという単位
どんな設定でログを出力するのかを決めること
logging.php などで定義できる
code:php
// logging.php
'channels' => [
'postlog' => [ // 自作channel設定
'driver' => 'daily', // dailyドライバを使う
'path' => storage_path('logs/postlog_channnel.log'), // path
'level' => 'debug', // どの程度のログか(緊急度.)
'days' => 3,
]
// storage/logs/postlog_channnel-2023-01-07.log を吐き出すことができる
Log::channel('postlog')
->debug('投稿が完了しました。', 'id' => $create->id, 'message' => $create->message);
Monolog
https://github.com/Seldaek/monolog
かあスレのものは、2.x
https://github.com/Seldaek/monolog/blob/2.x/README.md
Laravelに標準で導入されている、PHPのライブラリのこと
Laravel特有の機能というわけでなく、導入すればバニラPHPでも当然使用できる
使い方
README.mdをちゃんと読めば書いてる
code:php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
// Logger::classの記述で、どの程度のレベルまでlogファイルに出力するかを決めている。
// 今回はWARNINGなので、$log->info()の情報はログファイルには書かれない。
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
// add records to the log
$log->warning('Foo');
$log->error('Bar');
日付のログ
StreamHandlerの部分を、RotatingFileHandlerとする
配列をmonologで出す
https://stackoverflow.com/questions/67126326/logmanagerdebug-must-be-of-the-type-array-in-laravel
code:php
$user_ids = User::pluck('id') // 配列
$monolog->info('ユーザーID一覧', $user_ids); // []で囲むこと。
2023-01-19 15:22:49 INFO: ユーザーID一覧 ["object (Illuminate\\Support\\Collection: 17970,17971,17973,17974,17975)"]