SPRING BOOT
Cách sử dụng Spring Scheduled trong Spring Boot Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java Hướng dẫn Upload file với Spring Boot trong Java Hướng dẫn download file với Spring Boot trong Java Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java Spring Boot là gì? Tại sao sử dụng Spring Boot trong Java Cài đặt Spring Boot trong Java, code một project Spring Boot cơ bản RESTful API là gì? Cách hoạt động của RESTful API trong Spring Boot RESTful API hoạt động qua giao thức HTTP như thế nào? CRUD đơn giản với RESTful API trong Spring Boot Java Các thuộc tính của Spring Boot trong Java Hướng dẫn sử dụng Thymeleaf và Spring Boot trong Java Hướng dẫn sử dụng FreeMarker với Spring Boot trong Java Hướng dẫn sử dụng JSP và Spring Boot trong Java Cách dùng Logging trong Spring Boot Kiến trúc 3layer trong Spring Boot là gì? Cách hoạt động thế nào? Hướng dẫn sử dụng Apache Tiles với Spring Boot trong Java Sử dụng nhiều ViewResolver trong Spring Boot Java Giới thiệu về Spring Boot Actuator trong ứng dụng Spring Boot Cách dùng Spring JDBC trong ứng dụng Spring Boot Java Spring Data JPA trong Spring Boot là gì? Spring Data JPA có gì hay? Tương tác giữa Spring Boot, JPA và cơ sở dữ liệu H2 Cách dùng Spring Email trong Spring Boot Sử dụng @bean trong ứng dụng Spring Boot Cách chuyển HTTP sang HTTPS trong Spring Boot Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền Cách triển khai Spring Boot trên Tomcat Server Sử dụng JUnit để tạo unit test trong Spring Boot Cách test RESTful API trong Spring Boot Tạo ứng dụng Chat với Spring Boot và Websocket Tạo trang web đa ngôn ngữ với Spring Boot trong Java Sử dụng Twitter Bootstrap trong Spring Boot Hướng dẫn sử dụng Interceptor trong Spring Boot Cách tạo Restful Client bằng RestTemplate trong Spring Boot Cách dùng Spring Boot và MongoDB trong Java Cách dùng Spring Boot và Mustache trong Java Cách dùng Groovy trong Spring Boot Java
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách dùng Logging trong Spring Boot

Trong quá trình phát triển ứng dụng, logging là một trong những yếu tố quan trọng giúp chúng ta theo dõi hoạt động của ứng dụng và xác định các lỗi có thể xảy ra.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài viết này, chúng ta sẽ tìm hiểu về cách sử dụng logging trong Spring Boot, một trong những framework phổ biến để xây dựng các ứng dụng Java. Bài viết sẽ giúp bạn hiểu rõ hơn về các khái niệm liên quan đến logging trong Spring Boot, các loại logger khác nhau và cách cấu hình logging để quản lý hoạt động của ứng dụng. Hãy cùng khám phá nhé!

1. Logging trong Spring Boot là gì?

logging png

Spring Boot Logging

Logging trong Spring Boot là quá trình ghi lại các thông tin về hoạt động của ứng dụng vào một tập tin hoặc hệ thống quản lý log. Logging giúp cho việc phân tích và xác định các lỗi, sự cố trong ứng dụng trở nên dễ dàng hơn. Nó cũng giúp cho việc quản lý và theo dõi hoạt động của ứng dụng trở nên hiệu quả hơn, đồng thời cũng cung cấp thông tin hữu ích cho việc triển khai, giám sát và phân tích hiệu suất của ứng dụng.

Spring Boot hỗ trợ nhiều loại logger khác nhau như Logback, Log4j2 Java Util Logging, đồng thời cung cấp các công cụ cấu hình linh hoạt để quản lý logging trong ứng dụng. Các logger này có thể được cấu hình để ghi log theo các mức độ khác nhau, từ mức độ thông tin đến mức độ cảnh báo và lỗi. Chúng ta cũng có thể định dạng các thông tin log theo cách mà chúng ta mong muốn, chẳng hạn như định dạng kiểu JSON hoặc XML.

Bài viết này được đăng tại [free tuts .net]

Để sử dụng logging trong Spring Boot, chúng ta chỉ cần thêm một số dependency cần thiết vào file pom.xml hoặc build.gradle của ứng dụng. Sau đó, chúng ta có thể cấu hình logging bằng cách sử dụng các tệp cấu hình hoặc bằng cách cấu hình trực tiếp trong file application.properties hoặc application.yml của ứng dụng.

Tóm lại, logging là một phần quan trọng trong việc phát triển ứng dụng, giúp cho việc quản lý và theo dõi hoạt động của ứng dụng trở nên dễ dàng hơn. Logging trong Spring Boot cung cấp các công cụ cấu hình linh hoạt và hỗ trợ nhiều loại logger khác nhau, giúp cho việc sử dụng và quản lý logging trở nên đơn giản và hiệu quả.

Ưu và nhược điểm của Logging:

Logging là một phần quan trọng trong việc phát triển ứng dụng, đặc biệt là trong các ứng dụng lớn và phức tạp. Logging trong Spring Boot cũng không phải là ngoại lệ. Sau đây là một số ưu và nhược điểm của logging trong Spring Boot:

Ưu điểm:

  • Giúp phát hiện và sửa chữa lỗi: Logging cho phép các nhà phát triển xác định các lỗi hoặc sự cố trong ứng dụng nhanh chóng. Nhờ đó, các nhà phát triển có thể khắc phục các lỗi và sửa chữa ứng dụng một cách nhanh chóng hơn.

  • Giúp phân tích hiệu suất: Logging giúp theo dõi và phân tích hiệu suất của ứng dụng, giúp cho các nhà phát triển có thể tối ưu hóa và cải thiện hiệu suất của ứng dụng một cách hiệu quả.

  • Cung cấp thông tin hữu ích: Logging cung cấp các thông tin hữu ích cho việc giám sát và quản lý hoạt động của ứng dụng, giúp cho các nhà phát triển có thể đưa ra các quyết định thông minh để tối ưu hóa hoạt động của ứng dụng.

  • Dễ dàng cấu hình: Spring Boot cung cấp các công cụ cấu hình linh hoạt cho logging, giúp cho việc cấu hình logging trở nên đơn giản và dễ dàng hơn.

Nhược điểm:

  • Tốn tài nguyên: Logging sử dụng tài nguyên của hệ thống và có thể ảnh hưởng đến hiệu suất của ứng dụng. Do đó, các nhà phát triển cần cân nhắc và cấu hình logging một cách hợp lý để tránh tốn tài nguyên quá nhiều.

  • Độ phức tạp: Logging có thể trở nên phức tạp khi ứng dụng của bạn có nhiều module và ghi log ở nhiều nơi khác nhau. Việc quản lý logging trong trường hợp này có thể trở nên khó khăn.

​2. Các bước tạo project sử dụng được Logging

Sau khi tìm hiểu về khái niệm của Logging và cách hoạt động của Logging thì tiếp theo mình sẽ hướng dẫn cho các bạn các bước để tạo mới một project sử dụng được Logging:

Bước 1: Tạo project

Mở Eclipse => Chọn File => New => Spring Starter Project.

loggingb1 png

Bước 2: Đặt các thông tin cho project

Đặt các thông tin cấu hình cho dự án, bao gồm Group và Artifact, và chọn các cấu hình Maven nếu cần thiết. Nhấn Finish để tạo dự án.

Cụ thể:

  1. Trong cửa sổ New Spring Starter Project, nhập tên dự án vào trường "Name".
  2. Chọn "Maven" từ các lựa chọn "Type".
  3. Chọn Spring Boot version cho dự án. Bạn có thể chọn phiên bản mới nhất hoặc phiên bản phù hợp với nhu cầu của mình.
  4. Nhập tên các trường group, artifact, description vào
  5. Nhấn nút "Next" để tiếp tục.

loggingB2 png

Bước 3: Chọn cấu hình cho project

Sau khi xong bước đặt các thông tin project thì bạn sẽ phải chọn các thông tin cấu hình cho project bao gồm : DevTools Web sau đó ấn Finish.

loggingb3 png

Bước 4: Tạo project thành công.

Sau khi làm đúng theo các bước ở trên, bạn sẽ tạo thành công một project như ở hình có thể sử dụng được logging trong spring boot.

loggingb4 png

Bước 5: Thêm thư viện của logging vào project.

Tạo một file log4j.properties (nếu bạn sử dụng Log4j) trong thư mục src của project. Nếu bạn sử dụng java.util.logging framework, bạn không cần phải tạo file cấu hình.

Bạn có thể sử dụng logging framework trong code của mình bằng cách gọi các phương thức log tương ứng.

Ví dụ:

import org.apache.log4j.Logger;

public class MyClass {
    private static final Logger logger = Logger.getLogger(MyClass.class);

    public void doSomething() {
        logger.debug("Debug message");
        logger.info("Info message");
        logger.warn("Warning message");
        logger.error("Error message");
        logger.fatal("Fatal message");
    }
}

Và trên đây là quá trình tạo project với logging có thể thực hiện kiểm tra log để đảm bào rằng logging framework hoạt động đúng.

3. Spring Boot Log Format là gì?

Spring Boot Log Format là cách định dạng các thông tin được ghi lại trong quá trình logging trong ứng dụng sử dụng Spring Boot. Nó bao gồm các trường thông tin, định dạng, cấp độ log, thời gian, tên class và nội dung log. Các định dạng log format được cung cấp sẵn bởi Spring Boot bao gồm:

Default Log Format: đây là định dạng mặc định cho Spring Boot, sử dụng định dạng %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n. Định dạng này bao gồm các trường thông tin sau:

  • %d{yyyy-MM-dd HH:mm:ss.SSS}: định dạng thời gian log.
  • %-5level: cấp độ log, bao gồm các giá trị: TRACE, DEBUG, INFO, WARN và ERROR.
  • [%thread]: tên của thread.
  • %logger{36}: tên class sử dụng log.
  • -%msg%n: nội dung log.

JSON Log Format: định dạng này sử dụng JSON để lưu trữ các thông tin log, bao gồm các trường thông tin sau:

  • "@timestamp": thời gian log.
  • "level": cấp độ log, bao gồm các giá trị: TRACE, DEBUG, INFO, WARN và ERROR.
  • "thread": tên của thread.
  • "logger": tên class sử dụng log.
  • "message": nội dung log.

Logback Log Format: định dạng này sử dụng Logback để định dạng các thông tin log, bao gồm các trường thông tin sau:

  • %d{HH:mm:ss.SSS}: định dạng thời gian log.
  • [%thread]: tên của thread.
  • %-5level: cấp độ log, bao gồm các giá trị: TRACE, DEBUG, INFO, WARN và ERROR.
  • %logger{36}: tên class sử dụng log.
  • -%msg%n: nội dung log.

Ngoài các định dạng log format được cung cấp sẵn, Spring Boot cũng cho phép người dùng tùy chỉnh định dạng log format theo nhu cầu sử dụng của mình thông qua cấu hình trong tệp application.properties hoặc application.yml. Việc tùy chỉnh định dạng log format này giúp cho việc theo dõi và phân tích log trở nên thuận tiện hơn.

4. Spring Boot Logging File là gì?

Spring Boot Logging File là cách để lưu trữ thông tin log vào các tập tin trên đĩa cứng thay vì ghi vào console hoặc ghi vào các hệ thống logging khác.

Để cấu hình logging file trong Spring Boot, ta có thể sử dụng các thuộc tính trong file application.properties hoặc application.yml.

Ví dụ, để cấu hình log file có tên app.log được lưu trữ trong thư mục /var/log và chỉ ghi lại các log có mức độ từ INFO trở lên, ta có thể thêm các cấu hình sau vào file application.properties:

logging.file.name=/var/log/app.log
logging.level.root=INFO

Sau đó, khi ứng dụng chạy, các log sẽ được ghi vào tập tin /var/log/app.log thay vì console.

Ngoài ra, Spring Boot cũng hỗ trợ việc quay các tập tin log theo chu kỳ thời gian, kích thước hoặc số lượng lần ghi. Ví dụ, để cấu hình lưu trữ các tập tin log có kích thước tối đa là 10MB và lưu trữ tối đa 10 tập tin log, ta có thể thêm cấu hình sau vào file application.properties

logging.file.name=/var/log/app.log
logging.file.max-size=10MB
logging.file.max-history=10

Khi log file đạt kích thước tối đa, nó sẽ được đóng lại và một log file mới sẽ được tạo ra để ghi tiếp các log mới nhất.

Tóm lại, Spring Boot Logging File giúp lưu trữ các thông tin log vào các tập tin trên đĩa cứng, giúp cho việc quản lý và theo dõi các thông tin log trở nên thuận tiện hơn và tránh mất mát thông tin log do bị xoá hoặc bị lưu đè bởi các thông tin mới.

5. Spring Boot Logging Level là gì?

Spring Boot Logging Level là cách để cấu hình mức độ ghi log cho ứng dụng Spring Boot. Các mức độ logging level được định nghĩa từ thấp đến cao như sau:

  • TRACE: Mức độ thấp nhất, ghi lại tất cả các hoạt động của ứng dụng, bao gồm cả thông tin rất chi tiết và nhỏ nhặt.

  • DEBUG: Ghi lại các thông tin debug, chẳng hạn như các giá trị biến, lỗi runtime,...

  • INFO: Mức độ trung bình, ghi lại các thông tin quan trọng về hoạt động của ứng dụng, chẳng hạn như thông tin về các hoạt động chính của ứng dụng.

  • WARN: Ghi lại các thông báo cảnh báo về những tình huống không mong muốn xảy ra, nhưng vẫn có thể xử lý được.

  • ERROR: Mức độ cao nhất, ghi lại các lỗi xảy ra trong quá trình chạy ứng dụng, như lỗi kết nối cơ sở dữ liệu, lỗi trong code, lỗi hệ thống,...

Cấu hình logging level trong Spring Boot có thể được thực hiện bằng cách chỉ định giá trị của thuộc tính logging.level trong tệp application.properties hoặc application.yml.

Ví dụ, để đặt mức logging level thành DEBUG, bạn có thể thêm đoạn mã sau vào tệp application.properties:

logging.level.root=DEBUG

Hoặc nếu bạn sử dụng YAML, bạn có thể sử dụng cấu trúc sau:

logging:
  level:
    root: DEBUG

Sau khi cấu hình xong, các thông tin log sẽ được ghi lại với mức độ tương ứng. Ví dụ, nếu bạn đặt mức logging level thành INFO, thì các thông tin được ghi lại với mức độ TRACE và DEBUG sẽ không xuất hiện trong log của ứng dụng.

6. Các câu hỏi thường gặp

Logging là gì?

Logging là quá trình ghi lại thông tin về hoạt động của một ứng dụng, như lỗi, thông tin debug và các thông tin liên quan khác.

Logging được sử dụng để làm gì trong Spring Boot?

Logging trong Spring Boot được sử dụng để ghi lại các thông tin liên quan đến hoạt động của ứng dụng, như lỗi, thông tin debug và các thông tin khác, giúp cho việc phát hiện và sửa lỗi trở nên dễ dàng hơn.

Spring Boot hỗ trợ logging framework nào?

Spring Boot hỗ trợ nhiều logging framework khác nhau như Logback, Log4j2, JUL (Java Util Logging),...

Spring Boot Logging Level là gì?

Spring Boot Logging Level là cách để cấu hình mức độ ghi log cho ứng dụng Spring Boot, các mức độ logging level được định nghĩa từ thấp đến cao như TRACE, DEBUG, INFO, WARN, ERROR.

Làm thế nào để cấu hình logging trong Spring Boot?

Logging trong Spring Boot có thể được cấu hình bằng cách sử dụng tệp cấu hình như application.properties hoặc application.yml. Bạn có thể cấu hình logging level, định dạng log, vị trí lưu log,...

7. Kết bài viết

Như vậy là chúng ta đã tìm hiểu và hướng dẫn cách sử dụng logging trong Spring Boot. Logging là một phần quan trọng của quá trình phát triển ứng dụng, giúp cho việc phát hiện và sửa lỗi trở nên dễ dàng hơn. Tuy nhiên, việc sử dụng logging cũng cần được thực hiện một cách hợp lý để tránh tình trạng log quá nhiều và ảnh hưởng đến hiệu suất ứng dụng. Chúng ta nên cân nhắc cấu hình logging level phù hợp và sử dụng logging một cách có mục đích.

Hy vọng với những hướng dẫn trên, bạn đã có thể sử dụng logging trong Spring Boot một cách hiệu quả và tiết kiệm thời gian khi phát triển ứng dụng.

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top