Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

背景

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away