Log
File:
packages/skilldo/framework/src/Log/Log.php
Namespace:SkillDo\Log\Log
Alias ngắn:\Log
Class Log cung cấp hệ thống ghi nhật ký (logging) cho SkillDo CMS v8. Log hỗ trợ 2 channel (cách lưu file) và 8 cấp độ log theo chuẩn PSR-3.
1. Các Channel (Chế Độ Lưu)
daily (Mặc định)
Ghi log vào file theo từng ngày, tự động tạo file mới mỗi ngày và xóa file cũ hơn 360 ngày.
- Vị trí file log:
storage/logs/app-DD-MM-YYYY.log - Ví dụ:
storage/logs/app-10-03-2026.log
single
Ghi log vào một file cố định tại đường dẫn bạn chỉ định. Thường dùng để ghi log riêng cho từng Plugin.
- Vị trí file log: Đường dẫn tương đối từ thư mục
storage/logs/ - Ví dụ:
plugins/my-plugin/error.log→storage/logs/plugins/my-plugin/error.log
2. Các Cấp Độ Log
Theo thứ tự từ nghiêm trọng nhất đến ít nghiêm trọng nhất:
| Level | Mô tả |
|---|---|
emergency | Hệ thống không thể hoạt động |
alert | Cần xử lý ngay lập tức |
critical | Lỗi nghiêm trọng, tính năng không hoạt động |
error | Lỗi thực thi, exception |
warning | Cảnh báo, không phải lỗi nhưng cần chú ý |
notice | Thông báo thông thường nhưng đáng ghi nhớ |
info | Thông tin hữu ích (luồng xử lý bình thường) |
debug | Thông tin chi ti ết để debug khi phát triển |
3. Cách Sử Dụng
3.1 Dùng Channel daily (Mặc định)
Gọi trực tiếp các static method — hệ thống tự dùng channel daily:
use SkillDo\Log\Log;
// Ghi thông tin
Log::info('Người dùng đăng nhập thành công', ['user_id' => 5]);
// Ghi cảnh báo
Log::warning('Số lượng tồn kho thấp', ['product_id' => 10, 'quantity' => 2]);
// Ghi lỗi
Log::error('Thanh toán thất bại', ['order_id' => 123, 'reason' => 'Insufficient funds']);
// Ghi debug (dùng khi phát triển)
Log::debug('Giá trị biến $cart', ['cart' => $cart]);
// Ghi không có context
Log::info('Cron job chạy xong');
Định dạng một dòng trong file log:
[2026-03-10 23:30:00] local.INFO: Người dùng đăng nhập thành công {"user_id":5}
[2026-03-10 23:31:05] local.ERROR: Thanh toán thất bại {"order_id":123,"reason":"Insufficient funds"}
3.2 Dùng Channel single — File Log Riêng Cho Plugin
Dùng Log::single($path) để ghi vào một file riêng, tránh lẫn lộn với log hệ thống. Đường dẫn $path là tương đối so với storage/logs/.
use SkillDo\Log\Log;
// Ghi log vào storage/logs/plugins/my-plugin/error.log
Log::single('plugins/my-plugin/error.log')->error('Gọi API thất bại', [
'url' => 'https://api.example.com/pay',
'status' => 500,
]);
// Ghi log thông tin vào file riêng
Log::single('plugins/my-plugin/activity.log')->info('Đơn hàng được tạo', [
'order_id' => 456,
'total' => 250000,
]);
3.3 Dùng Channel daily Tường Minh
use SkillDo\Log\Log;
Log::daily()->info('Cron job đồng bộ sản phẩm hoàn tất', ['count' => 150]);