Quay lại
Global contextual logging trong Laravel

Ghi Logging là một phần không thể thiếu trong quá trình phát triển ứng dụng. Và nếu bạn đang làm việc với Laravel, việc ghi log mọi thứ thật dễ dàng.

Tất cả những gì bạn cần là sử dụng Illuminate\Support\Facades\Log và sử dụng các cấp độ ghi nhật ký khác nhau như sau:

use Illuminate\Support\Facades\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);

Như bạn có thể thấy, mức độ ghi log là điều dễ hiểu. Ngoài ra, bạn cũng có thể chuyển một mảng dữ liệu theo ngữ cảnh sang các phương thức log. Dữ liệu theo ngữ cảnh này sẽ được định dạng và hiển thị cùng với thông điệp tường trình như sau:

use Illuminate\Support\Facades\Log;

Log::info('User failed to login.', ['id' => $user->id]);

Giờ đây, bạn có thể ghi log những thứ như thế này theo cách riêng lẻ, đôi khi bạn có thể muốn tính khả thi khi bạn luôn muốn một số thông tin nhất định được ghi cùng với tất cả log của mình.

Ví dụ: Bạn sẽ muốn có thông tin người dùng mỗi khi bạn đăng nhập nội dung nào đó vào ứng dụng của mình. Bạn làm điều đó như thế nào?

Um thì, hóa ra với bản phát hành nhỏ gần đây của Laravel, bạn sẽ có thể làm được điều đó.

Global contextual logging

Cùng với tất cả các cấp độ ghi log mà tôi đã đề cập trước đó, giờ đây trong Laravel 8.x, bạn cũng sẽ có phương thức withContext mà bạn có thể sử dụng để bao gồm thông tin cần được đưa vào tất cả các mục log tiếp theo như sau:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;

class AssignRequestId
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $requestId = (string) Str::uuid();

        Log::withContext([
            'request-id' => $requestId
        ]);

        return $next($request)->header('Request-Id', $requestId);
    }
}

Như bạn có thể biết, bạn có thể sử dụng withContext ở những nơi thường có thể truy cập được. Ví dụ, trong request middlewares.

Bây giờ, lần tiếp theo bạn đăng nhập bất kỳ thứ gì, id yêu cầu cũng sẽ được ghi cùng với thông điệp tường trình như sau:

 

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday