背景
イケているかといわれるとかなりイケてないからほかにやり方あるんだろうなと思いつつ、
Laravelのログ周りはいまいちよくわかってない中で、そんなに激しくは使わないので、
5.4ではファイルの場所を変えるのにバッチごとに
use Illuminate\Support\Facades\Log;
Log::useDailyFiles('FILE_PATH');
と記載してごまかしていましたが、5.6で同じようなことをしようとしたら
Call to undefined method Monolog\Logger::useDailyFiles()
そんなものねーよ、と怒られる。
config/logging.phpというのが新しくできて、チャンネルをどうこうするようになったらしいが、
カスタムチャンネルの作り方とか、envでチャンネル切り替えらえるよとかはあるけど、途中でのチャンネルの切り替え方がわからない
さすがにログを吐き出すごとに
Log::channel('channnel_name')->info('log comment');
みたいに書くのはないっす、という気持ち。
https://qiita.com/hrdaya/items/b01d5621937a0710ca64
切替方法
結局イケてないままではあるが、同じようなことができた。
まず普通にチャンネルを作る
カスタムチャンネルとか作ればもっといろいろできそう。
config/logging.php
'channels' => [
'hogehoge' => [
'driver' => 'daily', // ここはよしなに。
'path' => storage_path('logs/hogehoge.log'), // ここでパスを切り替える
'level' => 'debug',
'days' => 30,
]
]
そして、LogManagerのコードとか読んでテキトーに以下にしたら実施したところ動いた。
Log::setDefaultDriver('hogehoge');
defaultか?とも思ったが、指定しない場合のものと思えば、確かにそうである。
channelじゃん、driverじゃないじゃんとも思うけどそこはよくわからない。
Log::info('test1'); // config/logging.php の default channel
Log::setDefaultDriver('hogehoge');
Log::info('test2'); // hogehoge channel
Log::setDefaultDriver('daily');
Log::info('test3'); // daily channel
Log::setDefaultDriver('single');
Log::info('test4'); // single channel
ちなみにConsole/Commandsで使ってますが、__construct()内で行うと、artisan起動時にとりあえず呼び出すようなので、一番最後の?が採用されそう。