Laravelでログ出力

作成日:2019-06-07, 更新日:2019-06-07

基本

・「.env」で「LOG_CHANNEL」を指定
・「src\config\logging.php」で詳細設定(ログの出力レベルやファイル名の指定など)
・「src\storage\logs」の中に出力
※画面へのエラー出力は「src\config\app.php」で「APP_DEBUG:テスト環境はtrue、本番はfalse」

▼ログ出力するとき(※「出力レベル:info」のとき)

$message = 〇〇〇;
Log::info($message);

▼出力レベル
・emergency
・alert
・critical
・error
・warning
・notice
・info
・debug

▼「src\config\logging.php」で「出力レベル:info」としたとき「emergency~info」まで出力

Log::info(〇〇〇);
Log::debug(〇〇〇);

→「Log::info()」は出力されるが「Log::debug()」は出力されない

個人的な使い方

細かいコトはよく分からない・・・何でもかんでもLaravelが決めたヤツを使えってスタンスなので応用したいときがスゴイ困る。

▼現状と希望
・Laravelは使いこなせていない
・ある程度、自由にしたい(条件によってはメールを飛ばしたくなるかもしれない)
・誰が見ても分かりやすく、メンテをしやすくしたい
・Laravelのようにあちこちのファイルを修正するってのは避けたい

各ファイル

.env

略
LOG_CHANNEL=single
略

src\config\app.php

略
'debug' => env('APP_DEBUG', false),
略

本番環境のときは「true」にする

src\config\logging.php

略
'single' => [
  略
  'path' => storage_path('logs/laravel_'.date('Ymd').'.log'),
  'level' => 'debug',
],
略

「level」は本番のときは「info」か「notice」にする

src\app\helpers\lib\log.php(新規作成)

<?php
namespace App\Helpers\Lib;
use Illuminate\Support\Facades;

class Log {
  public static function save($body='', $prms=array()) {
    // 引数($prms)にあわせてゴニョゴニョする
    \Log::info($body);
  }
}

▼呼出し例

\App\Helpers\Lib\Log::save(〇〇〇, array('level'=>'info'));