+4

Laravel LogViewer - Thay đổi giao diện file laravel-log?

Mở đầu

Khi các bạn làm việc với Laravel thì có nhiều tools để bạn debug trong quá trình dev như laravel-debugbarlaravel-log-viewer, trong đó laravel-debugbar có lẽ là được nhiều bạn sử dụng nhất. Laravel debugbar sẽ thêm một small bả ở dưới cùng browser với debug information ví dụ như số lượng câu queries ở page đó chẳng hạn, xem route, mesagges,... Nhưng có lẽ với tool laravel-log-viewer thì sẽ được ít biết tới hơn, vậy trong bài biết này chúng ta cùng tìm hiểu laravel-log-viewer nó là một package như thế nào? 🤔

Laravel Log Viewer là gì?

Như bạn đã biết khi bạn xây dựng một ứng dụng sử dụng laravel thì trong source code của bạn đã có một folder storage/logs/... để chứa các file logs giúp bạn xem được các thông báo lỗi trên ứng dụng của bạn rõ ràng hơn. Các file logs đó sẽ lưu trữ tất cả lỗi khi chạy ứng dụng hoặc bất kỳ lỗi nào khác, tất cả các lỗi đó sẽ được ghi lại vào trong file. Vì nó lưu trữ hầu như tất cả các lỗi cho nên khi bạn mở 1 file logs ra thì sẽ thấy các thông báo lỗi xếp chồng lên nhau, khó phân biệt đó là thông báo lỗi hay là cảnh báo, bạn sẽ mất thời gian để debug dẫn đến khó nắm bắt được tình trạng ứng dụng.

Chính vì điều này nên để khác phục vấn đề trên thì package LogViewer được ra đời để quản lý logs tốt hơn. LogViewer cung cấp một giao diện thân thiện với người dùng trong ngay chính browser với HTML table khá dễ nhìn. Nó sẽ thống kê báo cáo các lỗi có trên ứng dụng, phân biệt các lỗi, các cảnh báo và bạn cũng có thể xem và xóa logs trực tiếp các file ghi log ở đây.

Cài đặt package LogViewer

Note: LogViewer chỉ hỗ trợ duy nhất cho việc ghi log theo ngày (daily) nên bạn hãy sét giá trị LOG_CHANEL thành daily thay vì giá trị mặc định là stack trong file .env của bạn.

Để cài đặt thì bạn có thể chạy thông qua composer bằng command sau:

composer require arcanedev/log-viewer:{x.x}

Trong đó x.x chính là version phù hợp với từng version laravel mà bạn sử dụng.

Ví dụ mình dùng laravel 5.8 thì mình sẽ chạy lệnh sau:

composer require arcanedev/log-viewer:~4.7.0


Sau khi cài đặt thành công, bạn tiếp tục chạy một trong các lệnh sau đây tùy theo bạn, mình sẽ chạy câu lệnh đầu tiên 😅

Publishing file config và file translations

php artisan log-viewer:publish

kết quả là:

Publishing files bắt buộc

php artisan log-viewer:publish --force

Publishing duy nhất file config

php artisan log-viewer:publish --tag=config

Publishing duy nhất file translations

php artisan log-viewer:publish --tag=lang

Vậy bạn muốn kiểm tra xem bạn cà đặt đã đúng chưa, ứng dụng có đủ yêu cầu để log file hay không thì thật may là có câu lệnh như sau để kiểm tra, mình thử chạy nhé:

php artisan log-viewer:check

Nếu như lỗi thì nó sẽ thông báo status và message như ảnh bên dưới (lỗi này là do mình quên chưa chuyển LOG_CHANEL về daily đó 😂)

Kiểm tra thành công thì như sau 👍


Ngoài ra package cũng cho phép ta xóa tất các các file logs được tạo ra chỉ với một command

php artisan log-viewer:clear

Route của LogViewer

Như mình đã nói ở phần mở đầu là LogViewer sẽ tạo ra một giao diện chạy trên Browser đúng không? Vậy thì nó phải có url như nào chứ nhỉ. Mình đã chạy thử câu lệnh php artisan route:list và kết quả mình có một loạt các route của LogViewer như sau:

Method URI Name Action
GET/HEAD log-viewer log-viewer::dashboard Arcanedev\LogViewer\Http\Controllers\LogViewerController@index
GET/HEAD log-viewer/logs log-viewer::logs.list nArcanedev\LogViewer\Http\Controllers\LogViewerController@listLogs
DELETE log-viewer/logs/delete log-viewer::logs.delete Arcanedev\LogViewer\Http\Controllers\LogViewerController@delete
GET/HEAD log-viewer/logs/{date} log-viewer::logs.show Arcanedev\LogViewer\Http\Controllers\LogViewerController@show
GET/HEAD log-viewer/logs/{date}/download log-viewer::logs.download Arcanedev\LogViewer\Http\Controllers\LogViewerController@download
GET/HEAD log-viewer/logs/{date}/{level} log-viewer::logs.filter Arcanedev\LogViewer\Http\Controllers\LogViewerController@showByLevel
GET/HEAD log-viewer/logs/{date}/{level}/search log-viewer::logs.search Arcanedev\LogViewer\Http\Controllers\LogViewerController@search

Configuration LogViewer

Ngoài ra bạn cũng có thể config phần view các thứ từ Storage path, Localiztion, theme, pagination, icon, colors, ... trong file config/log-viewer.php bạn có thể tham khảo tại đây. Theo mình nghĩ vì họ đã config có thể nói là hợp lý nhất rồi nên mình sẽ không thay đổi phần này nữa 🤔

Kết quả

Bạn chạy theo đường dẫn sau http://127.0.0.1:8000/log-viewer sẽ thấy màn hình của LogViewer

Dashbard

Danh sách file Log theo ngày

Chi tiết lỗi trong file log


Như vậy mình đã giới thiệu về package LogViewer là gì và cách cài đặt nó trong một ứng dụng laravel, hi vọng nó sẽ giúp ích cho các bạn nào muốn debug file log nó màu mè hơn thay vì toàn chữ là chữ như trước nữa 😂 xin chào và hẹn gặp lại!

Source code package: https://github.com/ARCANEDEV/LogViewer


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.