Bước 1: Tạo 1 file CreateCustomLogger.php ở trong thư mục App\Logging\

<?php

/**
 * Created by Zezo.dev.
 * User: MRS
 * Date: 3/29/2018
 * Time: 16:36
 */

namespace App\Logging;

use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class CreateCustomLogger
{
    public function __invoke(array $config)
    {
        //Chú ý thứ tự mức độ log, lần lượt từ trái qua phải, cái nào viết trước thì phải viết trước
        //debug, info, notice, warning, error, critical, alert, emergency.
        $arrLevel = ['logs/debug.log' => Logger::DEBUG,
            'logs/info.log' => Logger::INFO,
            'logs/notice.log' => Logger::NOTICE,
            'logs/warning.log' => Logger::WARNING,
            'logs/error.log' => Logger::ERROR,
            'logs/critical.log' => Logger::CRITICAL,
            'logs/alert.log' => Logger::ALERT,
            'logs/emergency.log' => Logger::EMERGENCY
        ];
        $uri = @$_SERVER['REQUEST_URI'];
        $logger = new Logger('S');

        foreach ($arrLevel as $file => $level) {
            $stream = new StreamHandler(storage_path($file), $level, false);
            $stream->setFormatter(new LineFormatter(
                "[%datetime%] %channel%.%level_name%: %message% %context% %extra% #$uri\n",
                null,
                false,
                true
            ));
            $logger->pushHandler($stream);
        }


 // cách sử dụng
//        throw new Exception('Demo loi'); // thả ra 1 cái exception
//        throw  new AccessDeniedException("Khong co quyen su dung");
//        trigger_error('Demo trigger eror type E_USER_NOTICE',E_USER_NOTICE);
//        trigger_error('Demo trigger eror type E_USER_WARNING',E_USER_WARNING);
//        trigger_error('Demo trigger eror type E_USER_ERROR',E_USER_ERROR);

//        $message = 'Test chuc nang log: ';
//
//        Log::emergency($message);
//        Log::alert($message);
//        Log::critical($message);
//        Log::error($message);
//        Log::warning($message);
//        Log::notice($message);
//        Log::info($message);
//        Log::debug($message);

        return $logger;
    }
}

 

Bước 2: Trong thư mục config/ mở file logging.php thêm vào mảng chanel nội dung sau:

   'custom' => [
            'driver' => 'custom',
            'via' => App\Logging\CreateCustomLogger::class,
        ],

Bước 3: Vào trong file cấu hình .env sửa chanel log thành custom

LOG_CHANNEL=custom

 

Bước 4: Thử nghiệm chức năng log

Vào action của 1 controller nào đó viết lệnh

      $message = 'Test chuc nang log: ';

       Log::emergency($message);
       Log::alert($message);
       Log::critical($message);
       Log::error($message);
       Log::warning($message);
       Log::notice($message);
       Log::info($message);
       Log::debug($message);

để chạy được bạn cần khai báo use cái class Log nhé

use Illuminate\Support\Facades\Log;

Khi chạy thử trên web xong, bạn vào thư mục storage/logs/ sẽ thấy các file log sinh ra theo từng loại.

Việc chia nhỏ file log ra từng loại sẽ giúp bạn kiểm soát log tốt hơn.