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

749

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-debugbar và laravel-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

 

kết quả là:

Publishing files bắt buộc

Publishing duy nhất file config

Publishing duy nhất file translations

 

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é:

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

 

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 ArcanedevLogViewerHttpControllersLogViewerController@index
GET/HEAD log-viewer/logs log-viewer::logs.list nArcanedevLogViewerHttpControllersLogViewerController@listLogs
DELETE log-viewer/logs/delete log-viewer::logs.delete ArcanedevLogViewerHttpControllersLogViewerController@delete
GET/HEAD log-viewer/logs/{date} log-viewer::logs.show ArcanedevLogViewerHttpControllersLogViewerController@show
GET/HEAD log-viewer/logs/{date}/download log-viewer::logs.download ArcanedevLogViewerHttpControllersLogViewerController@download
GET/HEAD log-viewer/logs/{date}/{level} log-viewer::logs.filter ArcanedevLogViewerHttpControllersLogViewerController@showByLevel
GET/HEAD log-viewer/logs/{date}/{level}/search log-viewer::logs.search ArcanedevLogViewerHttpControllersLogViewerController@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

TopDev via Viblo

SHARE