【Laravel】Traitで開始・終了ログ出力を共通化する方法!

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

結論、Traitで開始・終了ログ出力を共通化するのは簡単です。

本記事を読めば、LaravelのTraitで開始・終了ログ出力を共通化する方法が理解できるので早速見ていきましょう!

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいね♪

執筆者/監修者
  • フリーランスエンジニア(保有資格個)
  • ブログ・アフィリエイト歴5年
  • ブランドせどりで月利50万円⇨脱サラ
  • Twitterフォロワー約2,000人
いずみです
目次

LogTrait(ログトレイト)を新規作成

まずはTraitを作成します。

app直下にTraitsフォルダを作成します。

<?php

namespace App\Traits;

use Log;

trait LogTrait
{
    /**
     * 開始ログ
     */
    public function start()
    {
        $caller = $this->fetchCaller();
        
        Log::info("{$caller['class']} {$caller['function']}() start.");
    }

    /**
     * 終了ログ
     */
    public function end()
    {
        $caller = $this->fetchCaller();

        Log::info("{$caller['class']} {$caller['function']}() end.");
    }

    /**
     * 呼び出し元情報(クラス&メソッド)を取得する
     *
     * @return 呼び出し元情報
     */
    private function fetchCaller(): array
    {
        $dbg = debug_backtrace();

        return [
            'class'    => $dbg[2]['class'],
            'function' => $dbg[2]['function'],
        ];
    }    
}

↑がログ出力を行うLogTrait.phpです。

Controller(コントローラ)でLogTrait(ログトレイト)を呼び出す

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Traits\LogTrait;

class HogeController extends Controller
{
    use LogTrait;

    public function index()
    {
        $this->start();

        // 処理

        $this->end();
    }
}

↑のように、開始ログ・終了ログを出力します。

LogTrait(ログトレイト)のログ内容を確認

[2020-03-08 07:34:47] local.INFO: App\Http\Controllers\HogeController index() start.  
[2020-03-08 07:34:47] local.INFO: App\Http\Controllers\HogeController index() end.

ログが出力されていればOKです。

まとめ

今回は、LaravelのTraitで開始・終了ログ出力を共通化する方法について解説しました。

意外と簡単でしたね。

  • おすすめ本
¥2,673 (2023/07/23 15:53時点 | Amazon調べ)

Laravelの勉強なら「」が分かりやすくておすすめですよ♪

いずみ

最後までお読みいただき、ありがとうございました!

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次