6.1.4 Cấu hình ghi log (logging)
Hầu hết các ứng dụng đều cung cấp một hình thức ghi log nào đó. Và ngay cả khi ứng dụng của bạn không ghi log trực tiếp, thì các thư viện mà ứng dụng sử dụng chắc chắn cũng sẽ ghi lại hoạt động của chúng.
Theo mặc định, Spring Boot cấu hình ghi log thông qua Logback http://logback.qos.ch để ghi ra console ở mức INFO. Có lẽ bạn đã từng thấy rất nhiều dòng log ở cấp độ INFO trong quá trình chạy ứng dụng và các ví dụ khác. Nhưng để nhắc lại, dưới đây là một ví dụ log thể hiện định dạng mặc định (đã xuống dòng để vừa với lề trang):
2021-07-29 17:24:24.187 INFO 52240 --- [nio-8080-exec-1] com.example.demo.Hello
Here's a log entry.
2021-07-29 17:24:24.187 INFO 52240 --- [nio-8080-exec-1] com.example.demo.Hello
Here's another log entry.
2021-07-29 17:24:24.187 INFO 52240 --- [nio-8080-exec-1] com.example.demo.Hello
And here's one more.Để kiểm soát hoàn toàn cấu hình ghi log, bạn có thể tạo một file logback.xml tại thư mục gốc của classpath (thường là src/main/resources). Dưới đây là một ví dụ đơn giản về file logback.xml bạn có thể sử dụng:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="root" level="INFO"/>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>Với cấu hình mới này, các dòng log tương tự ví dụ trước có thể trông như sau (đã được xuống dòng để dễ nhìn):
17:25:09.088 [http-nio-8080-exec-1] INFO com.example.demo.Hello
- Here's a log entry.
17:25:09.088 [http-nio-8080-exec-1] INFO com.example.demo.Hello
- Here's another log entry.
17:25:09.088 [http-nio-8080-exec-1] INFO com.example.demo.Hello
- And here's one more.Ngoài mẫu định dạng log, cấu hình Logback này nhìn chung tương đương với cấu hình mặc định nếu bạn không có file logback.xml. Tuy nhiên, bằng cách chỉnh sửa logback.xml, bạn có thể toàn quyền kiểm soát cách ghi log của ứng dụng.
LƯU Ý:Chi tiết về những gì có thể viết trong
logback.xmlnằm ngoài phạm vi của cuốn sách này. Vui lòng tham khảo tài liệu chính thức của Logback để biết thêm thông tin.
Những thay đổi phổ biến nhất bạn sẽ thực hiện trong cấu hình logging là thay đổi mức độ log và có thể là chỉ định file ghi log. Với các thuộc tính cấu hình của Spring Boot, bạn có thể thực hiện những thay đổi đó mà không cần tạo file logback.xml.
Để thiết lập các mức log, bạn tạo các thuộc tính có tiền tố là logging.level, theo sau là tên của logger mà bạn muốn thiết lập mức log. Ví dụ, giả sử bạn muốn đặt mức log mặc định (root) là WARN, nhưng muốn log của Spring Security ở mức DEBUG. Các dòng trong application.yml sau đây sẽ xử lý điều đó:
logging:
level:
root: WARN
org:
springframework:
security: DEBUGNgoài ra, bạn có thể rút gọn tên gói của Spring Security thành một dòng cho dễ nhìn hơn như sau:
logging:
level:
root: WARN
org.springframework.security: DEBUGBây giờ, giả sử bạn muốn ghi các log vào file TacoCloud.log trong thư mục /var/logs/. Các thuộc tính logging.file.path và logging.file.name có thể giúp bạn thực hiện điều đó:
logging:
file:
path: /var/logs/
name: TacoCloud.log
level:
root: WARN
org:
springframework:
security: DEBUGMiễn là ứng dụng có quyền ghi vào thư mục /var/logs/, các dòng log sẽ được ghi vào /var/logs/TacoCloud.log. Theo mặc định, các file log sẽ tự động xoay vòng (rotate) khi đạt kích thước 10 MB.
