I. Khái niệm về Log?
- Log là gì?
- Log là quá trình ghi lại các thông tin hoạt động trong quá trình chạy của ứng dụng,
- Tại sao phải ghi Log?
- để xem lại quá trình chạy của ứng dụng
- để Tracking
- Debug
- check heath
- …
- Không ghi Log có được không?
- Log như thế nào mới đúng?
- log gì?
- log những thông tin ghi nhận lại trong quá trình hoạt động của ứng dụng.
- ai log?
- Server ghi nhận các thao tác thực hiện của client và cả server.
- log như thế nào?
- log những thông tin cần thiết cho quá trình theo dõi (thông tin không bị vô nghĩa).
- để khi xem lại ta có thể phân tích,phát hiện bất thường.
- ví dụ những thông tin cần có:
- Thời gian request.
- Người request.
- HTTP request info: header, request, body,…
- HTTP response info.
- Error stack trace về error đó như lỗi ở đoạn nào, dòng nào, lỗi gì, input như thế nào,…
- Phân loại log (Log level)
- Log được phân loại theo Level, từ thấp đến cao như sau:
- ALL: đây là cấp độ thấp nhất, Logger và Appender được định nghĩa với cấp độ này, mọi thông tin cần log sẽ được log. (log tất cả các thông tin)
- Debug: các thông tin dùng để debug, chúng ta có thể bật/ tắt log này dựa vào mode của application.
- Info: các thông tin mà bạn muốn ghi nhận thêm trong quá trình hoạt động của hệ thống. Ví dụ: log số lượng request, status, duration, … để biết traffic của hệ thống thế nào.
- Warning: log các thông tin cảnh báo của chương trình.
- Error: các lỗi khi chạy chương trình sẽ được log. Cố gắng log toàn bộ thông tin liên quan nhiều nhất có thể để có thể reproduce lại được mà ít tốn thời gian nhất.
- Fatal: log các lỗi nghiêm trọng xảy ra trong chương trình, có thể làm cho chương trình không sử dụng được nữa.
- Off: đây là cấp độ cao nhất, được sử dụng khi chúng ta không muốn log bất kỳ thông tin nào nữa.
- Độ ưu tiên của các cấp độ log từ thấp đến cao như sau:
- ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF.
- Format log for Logstash
- điều quan trọng là log đó phải sử dụng được, nghĩa là dễ đọc, dễ trace ra được thông tin cần tìm. Để làm được điều này, các log của chúng ta phải tuân thủ theo một format được chỉ định.
- Có nhiều ứng dụng phục vụ cho việc thu thập và phân tích dữ liệu từ file log để có thể thống kê, search,… Một trong những ứng dụng trong Java thường dùng là Logstash.
- ví dụ:
- Log rotate
- Tool để ghi log trong Java
II. Logback cho Java Spring Boot.
83. Logging
Spring logback config
A Guide to Java Logging with Logback | Better Stack Community
Logging
III. Logstash
Xử lý Apache Access logs với LogStash trong ELK Stack - Viblo
Centralize spring boot log to ELK Elasticsearch, Logstash, Kibana
How to Centralize SpringBoot logs to ELK Elasticsearch using Filebeat and Logstash
ELK Stack with Spring Boot Logs | Log Kibana and ES | Logstash and ELK Stack in Spring Boot
⇒ xem cách config ở video này.