人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravelで任意のログチャンネルを追加してログを出力する

● Laravelで任意のログチャンネルを追加してログを出力する

cron実行時などは手動でログを出力して保存しておくと後からのデバッグが楽になります

・1. 設定ファイルを準備する

config/logging.php の 'channels に追加します。

    'channels' => [

        // 追加したチャンネル [apidebug]
        'apidebug' => [
            'driver'     => 'daily',
            'path'       => storage_path('logs/apidebug.log'),
            'level'      => 'info',
            'days'       => 30,
            'permission' => 0666,
        ],

・2. ログを出力する

// ロガー
$logger = \Log::channel('apidebug')->getLogger();
$logger->info( "TEST LOG", ['file' => basename(__FILE__), 'line' => __LINE__] );

・3. 出力例

storage/logs/apidebug-2019-xx-xx.log 次のようなログが 出力されます

[2019-08-26 11:34:06] local.INFO: TEST LOG {"file":"ApiDebugController.php","line":87} 

ログの出力レベル(下に行くほど深刻)

// DEBUG
$monolog->debug($message, $context);

// INFO
$monolog->info($message, $context);

// NOTICE
$monolog->notice($message, $context);

// WARNING
$monolog->warning($message, $context);

// ERROR
$monolog->error($message, $context);

// CRITICAL
$monolog->critical($message, $context);

// ALERT
$monolog->alert($message, $context);

// EMERGENCY
$monolog->emergency($message, $context);

● Laravelのログにファイル名やメソッド名を自動的に追加する

引用: https://goo.gl/NtbtSa

use Log;
$monolog = Log::getLogger();
$ip = new \Monolog\Processor\IntrospectionProcessor(
    \Monolog\Logger::DEBUG,
    [
        'Monolog\\',
        'Illuminate\\',
    ]
);
$monolog->pushProcessor($ip);

このようなログになります

[2018-11-09 01:52:35] local.WARNING: テーブルからデータを取得できません  {"file":"/home/app/Http/Controllers/TestController.php","line":231,"class":"App\\Http\\Controllers\\TestController","function":"postarticle"}

とても便利なので是非利用しましょう。

● ログの時刻がおかしい時の修正方法

config/app.php を以下のように変更します

    'timezone' => 'Asia/Tokyo',
No.1354
06/22 11:53

edit