日々更新中です!

【Laravel】Traitで開始・終了ログ出力を共通化してみた件

  • URLをコピーしました!
悩んでいる男の子

LaravelのTraitを使ってログ出力を共通化したいんだけど、どうしたらいいのかな?
具体的なソースコードを交えて教えてほしいんだけど。。

こんな悩みを解決します。

  • 本記事の内容
  • Traitで開始・終了ログを共通化する方法
  • 具体的なソースコード
  • 本記事の執筆者
プロフィール
いずみん(どこの写真だよ)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 物販月利50万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
  • 物販は彼女と楽しみながらやっています!

今回は、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」です。

コントローラでLogトレイトを呼び出す

<?php

namespace App\Http\Controllers;

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

class UserController extends Controller
{
    use LogTrait;

    private $userService;

    public function __construct(UserInterface $userService)
    {
        $this->userService = $userService;
    }

    /**
     * ユーザ情報全取得API
     *
     * @return 全ユーザ情報
     */
    public function index()
    {
        $this->start();

        $user = $this->userService->index();

        $this->end();

        return $user;
    }
}

コントローラで開始・終了ログを出力するようにしました。

実際のログを見てみる

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

開始・終了ログが出力されていますね。

まとめ

今回は、Traitで開始・終了ログ出力を共通化してみました。

意外と簡単に実現できましたね。

ではまた!

  • おすすめ本はこちら!
いずみん

僕は↑の本でLaravelの勉強をしました!
非常に分かりやすいのでおすすめです!

  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

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

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いずみんのアバター いずみん 自由大好きおじ

自由大好きおじ | 物販月利50万達成⇨脱サラ | 物販(アパレルせどり)・アフィリエイト・プログラミング・投資に関する情報を発信中 | 元エンジニア | 保有資格約20個

コメント

コメントする

目次
閉じる