Debug và sử dụng Symfony Profiler
Trong quá trình phát triển ứng dụng Symfony, việc debug là không thể thiếu. Symfony hỗ trợ bạn mạnh mẽ với hệ thống debug tool và Web Profiler cực kỳ chi tiết. Bài học này sẽ hướng dẫn bạn cách sử dụng thanh công cụ debug (Web Debug Toolbar), Symfony Profiler và các công cụ dòng lệnh để kiểm tra lỗi, phân tích request, truy vấn CSDL, template, service và nhiều thông tin khác một cách trực quan và hiệu quả.

1. Web Debug Toolbar (thanh công cụ ở cuối trang)
-
Tự động xuất hiện khi chạy ứng dụng ở môi trường
dev
. -
Hiển thị thông tin quan trọng:
- HTTP status code, response time
- Route, Controller
- Query SQL, lỗi, log
- Request parameters, session, user
Ví dụ:
Truy cập http://localhost:8000/hello
, bạn sẽ thấy thanh debug như sau:
⚪ GET /hello | 200 OK | 4.5 ms | Controller: HelloController | DB: 1 query | Twig: 1 template
Click vào thanh này → mở Web Profiler để xem chi tiết.
2. Symfony Profiler
Web Profiler là một giao diện chi tiết gồm nhiều tab giúp bạn phân tích từng phần trong request.
Tab | Mô tả |
---|---|
Request | Header, query, POST, cookie, session, attributes |
Routing | Route được match, controller gọi |
Controller | Tên controller, file định nghĩa |
Twig | Template render, thời gian xử lý |
Doctrine | Truy vấn SQL, thời gian thực thi |
Events | Các sự kiện được gọi trong kernel |
Logs | Toàn bộ log, cảnh báo, lỗi |
Security | Người dùng đăng nhập, role, trạng thái |
3. Bật/tắt Web Profiler
Symfony chỉ bật Profiler ở môi trường dev
. Cấu hình nằm tại:
# config/packages/dev/web_profiler.yaml
web_profiler:
toolbar: true
intercept_redirects: false
Nếu bạn không thấy thanh debug:
- Đảm bảo bạn đang chạy ở
APP_ENV=dev
(file.env
) - Kiểm tra bạn không dùng
return $this->redirect(...)
(dointercept_redirects
mặc định là false)
4. Ghi log thủ công
Bạn có thể sử dụng service logger
để ghi log trong controller hoặc service:
use Psr\Log\LoggerInterface;
public function index(LoggerInterface $logger): Response
{
$logger->info('Truy cập trang index');
return $this->render('home/index.html.twig');
}
Log được lưu ở:
var/log/dev.log
5. Debug các service
Symfony hỗ trợ lệnh debug mạnh mẽ:
# Liệt kê tất cả service
php bin/console debug:container
# Tìm một service cụ thể
php bin/console debug:container logger
# Xem toàn bộ biến môi trường
php bin/console debug:dotenv
Ví dụ cụ thể
Controller sử dụng logger và xem trên Profiler:
public function demo(LoggerInterface $logger): Response
{
$logger->info('Truy cập route /demo');
return $this->json([
'message' => 'Debug example',
'status' => 200
]);
}
Truy cập http://localhost:8000/demo
rồi mở Web Profiler để:
- Xem log vừa ghi.
- Xem controller nào được gọi.
- Phân tích response, request, routing.
Kết luận
Symfony Profiler là công cụ mạnh mẽ giúp bạn:
- Hiểu rõ cách request được xử lý.
- Dễ dàng tìm và sửa lỗi.
- Phân tích hiệu suất của các phần trong ứng dụng.
- Ghi log và kiểm tra truy vấn SQL, template, bảo mật…
Sử dụng thành thạo công cụ này sẽ giúp bạn phát triển ứng dụng một cách chuyên nghiệp và hiệu quả hơn. Trong bài tiếp theo, chúng ta sẽ tìm hiểu về định tuyến cơ bản và nâng cao trong Symfony.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com