Sử dụng MongoDB để lưu Log cho Laravel 5

Để 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:

ghi log mongo

Leave a reply:

Your email address will not be published.

Site Footer