LoginSignup
9
6

More than 5 years have passed since last update.

Laravel5.6でuseDailyFiles(),useFiles()が使えずに困った話(ログの出力先を切り替える)

Posted at

背景

イケているかといわれるとかなりイケてないからほかにやり方あるんだろうなと思いつつ、
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起動時にとりあえず呼び出すようなので、一番最後の?が採用されそう。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6