Symfony 4, Ẩn một số log không cần thiết với custom handler

Tram Ho

Bối cảnh

Symfony phát sinh khá nhiều log như, như process init, begin transaction, ini, . Hầu như những log này cung cấp thông tin ít quan trọng, nhưng lại gây nhiễu hệ thống log và đặc biệt là tốn tiền khách hàng (khi dùng các dịch vụ cloud như AWS Cloudwatch log để lưu trữ và filter log). Sau đây là các cách để ẩn bớt đi nhé

Giải phát

Dùng log level setting

Trong file monolog.yml, set biến log level tới 1 cấp đó mà bạn cảm thấy cần thiết, phục vụ tốt thông tin cho việc debug và các task điều tra

Các cấp độ setting log level các bạn có thể tham khảo

Dùng custom handler (xịn hơn)

Vì các log dư này đa phần là log debug và log info, nó cũng cùng cấp độ với các log mình hay add vào để điều tra, nên rất khó dùng cách trên, vậy nên dùng 1 handle đứng đầu để lọc bớt các message chỉ định cụ thể là giải pháp mình thấy khá ổn

  • Tạo 1 custom handle đừng đầu chuỗi log.

  • Trong service.yml thêm define class.

  • Trong folder Customize/Log thêm class:

Như bạn có thể thấy ở trên, biến $listMessageRemoved chứa các message mà bạn muốn remove ra khỏi log, cơ chế ở đây là dựa vào method handle(), trả về true có nghĩa là message này đã được xử lí nên nó không cần gửi qua handle tiếp theo (ở đây chính là cloudwatch handler), theo documention:

=> Cuối cùng chúng ta cũng có 1 giải pháp ngon nghẻ, để remove bớt log để tốn tiền khách hàng, hy vọng sẽ giúp ích được cho mọi người

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo