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.