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


LaravelのTrait(トレイト)を使ってログ出力を共通化したいんだけど、やり方が分からないんだよね。。
具体的なソースコードを交えて教えてほしいんだけど。。
こんな疑問にお答えします。
- 本記事の内容
- 本記事の信頼性
本記事を書いている僕はエンジニア歴7年です。
Laravelは業務歴2年半なので、かなり有益な情報を発信できるかと思います。
結論、Traitで開始・終了ログ出力を共通化するのは簡単です。
本記事を読んでいただければ、LaravelのTraitで開始・終了ログ出力を共通化する方法がしっかりと理解できるので早速見ていきましょう!



すぐ読み終わるので、是非最後まで読んでみてください!
目次
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です。
まとめ | Traitで開始・終了ログ出力を共通化する方法
今回は、LaravelのTraitで開始・終了ログ出力を共通化する方法について解説しました。
意外と簡単でしたね。
この記事があなたのお役に立てば幸いです。
サイト内には、他にも初心者向けの記事を多く投稿していますので良ければ参考にしてみてください。
最後までお読みいただきありがとうございました!