Laravelのログを標準エラーに出力する

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Laravelのログは通常storage/logsディレクトリに出力されます。

遊び程度にしか使っていませんが、私は開発時はartisan serveしたい派なので、ログは同じコンソールに出た方が嬉しい。なので標準エラーにログを出力するようにしてみます。

        $monolog = Log::getMonolog();
        $monolog->pushHandler(new \Monolog\Handler\StreamHandler('php://stderr'));

こんなコードをどこかに書きます。どこが適切かはわかりませんが、一例としてはapp/Providors/ConfigServiceProvider.phpregister()メソッドの中などでもよいでしょう。
5.1のドキュメントには、bootstrap/app.phpの最後あたりで$app->configureMonologUsing()を呼べと書かれていました( http://laravel.com/docs/master/errors#configuration )。

app/bootstrap.php
$app->configureMonologUsing(function ($monolog) {
    $monolog->pushHandler(new \Monolog\Handler\StreamHandler('php://stderr'));
});

return $app;

で、ログを出力します。

WelcomeController.php
    public function index(Request $request)
    {
            \Log::info("hello");
...

こんな感じに出力されます。

$ artisan serve
Laravel development server started on http://localhost:8000/
[2015-04-21 13:25:42] local.INFO: hello [] []