Để lưu log cho Laravel trên MongoDB thì việc đầu tiên bạn phải cài đặt mongoDB đã. Các bước làm rất đơn giản.
Ở đây mình sử dụng Laravel 5.4, các phiên bản khác cũng tương tự.
Bước 1. Bạn cần tạo 1 file cấu hình thông tin kết nối đến MongoDB.
Tạo file: /config/mongolog.php với nội dung như sau:
<?php
use Monolog\Logger;
return array(
'server' => "mongodb://localhost:27017",
'database' => 'theodoichidao',
'collection' => 'logs',
'log_level' => Logger::DEBUG,
'time_zone' => 'UTC',
'datetime_format' => 'Y-m-d H:i:s',
);
Bước 2: Tìm đến file: bootstrap/app.php và thêm nội dung như dưới đây vào trước dòng
return $app;
$app->configureMonologUsing(function ($monolog) {
$mongoHandler = new Monolog\Handler\MongoDBHandler(
new MongoClient(Config::get('mongolog.server')),
Config::get('mongolog.database'),
Config::get('mongolog.collection')
);
Session::put('request_id', uniqid());
$monolog->pushHandler($mongoHandler);
$monolog->pushProcessor(new Monolog\Processor\WebProcessor($_SERVER));
$monolog->pushProcessor(function ($record) {
$record['extra']['session_id'] = Cookie::get(Config::get('session.cookie'));
$record['extra']['request_id'] = Session::get('request_id');
return $record;
});
});
Bước 3: Cách ghi log. Bạn có thể sử dụng tất cả các hàm log của Laravel để ghi 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);
Nếu bạn muốn thêm Contextual Information cũng rất đơn giản, bạn truyền thêm tham số là 1 mảng hoặc object ở sau tham số message như sau
Log::info('User failed to login.', ['id' => $user->id]);
Đây là thành quả sau khi thực hiện các bước trên: