Blog#18: Trên tay nhanh SLF4j logging 😊 (Series: Java Handbook – Phần 3)

Mình là TUẤN hiện đang là một Full-stack Developer tại Tokyo 😉. Nếu bạn thấy Blog này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé 😊. Hôm nay mình sẽ lướt qua nhanh chóng một số thứ đơn giản nhất về SLF4j. Ghi log là một phần rất quan

Mình là TUẤN hiện đang là một Full-stack Developer tại Tokyo 😉.
Nếu bạn thấy Blog này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé 😊.

Hôm nay mình sẽ lướt qua nhanh chóng một số thứ đơn giản nhất về SLF4j.

Ghi log là một phần rất quan trọng trong lập trình. Nó sẽ giúp một lập trình viên biết được vị trí ứng dụng bị lỗi. Bài viết này sẽ giúp bạn ghi log bằng SLF4j.

Định nghĩa

Logging Facade đơn giản cho Java (SLF4J) đóng vai trò như một Facade đơn giản hoặc Abtraction cho các framework logging khác nhau, chẳng hạn như java.util.logging, logback và log4j. SLF4J cho phép người dùng framework logging những gì mình muốn tại thời điểm triển khai.

(Về các Pattern như Facade hay Abtraction, Factory mình cũng đã có bài viết cụ thể về vấn đề này bạn có thể tham khảo để biết thêm một số Design Pattern cơ bản mà dev nào cũng nên biết)

Cách sử dụng SLF4j.

Yêu cầu

Để sử dụng SLF4j, chúng ta cần thêm ba phụ thuộc vào tệp pom.xml.

  • slf4j-api.jar
  • logback-core.jar
  • logback-classic.jar

Làm thế nào để Logging?

Chúng ta cần tạo một instance của Logger được truy xuất bằng cách gọi hàm getLogger tĩnh từ lớp LoggerFactory.

Cú pháp:

Logger logger = LoggerFactory.getLogger ("className");

ClassName là tên của lớp mà việc logging được thêm vào. ClassName này trở thành tên của trình logging.

Bây giờ sử dụng instance này, chúng ta có thể ghi log.

Ví dụ:

logger.debug ("Hello world.");

Trong ví dụ trên, hàm debug được sử dụng để ghi lại thông tin. Có nhiều hàm khác nhau có thể được sử dụng để ghi lại thông tin. Mọi hàm đều có ý nghĩa và có thể được hiển thị theo các level khác nhau được đặt trong tệp logback.xml.

Các hàm logging khác:

  • trace()
  • debug()
  • info()
  • warn()
  • error()

DONE 😄

Kiến trúc của Logback

Logback được chia thành ba mô-đun thường được gọi là logback-core, logback-classic và logback-access. Logback được xây dựng dựa trên ba lớp chính tức là Logger, Appender và Layout. Lớp Logger là một phần của mô-đun logback-classic. Appender và Layout là một phần của logback-core.

Cấu hình trong logback

Như đã đề cập trong tài liệu chính thức, khi logback tự cấu hình và nó sẽ thực hiện theo các bước dưới đây.

  1. Logback cố gắng tìm một tệp có tên logback-test.xml trong classpath.
  2. Nếu không tìm thấy tệp nào như vậy, logback sẽ cố gắng tìm tệp có tên logback.groovy trong classpath.
  3. Nếu không tìm thấy tệp nào như vậy, nó sẽ test tệp logback.xml trong classpath.
  4. Nếu không tìm thấy tệp nào như vậy, service-provider (được giới thiệu trong JDK 1.6) sẽ được sử dụng để giải quyết việc triển khai giao diện com.qos.logback.classic.spi.Configurator bằng cách tra cứu tệp META-INFservicesch.qos.logback.classic.spi.Configurator trong classpath. Nội dung của nó nên chỉ định tên lớp đủ điều kiện của việc triển khai Configurator như mong muốn.
  5. Nếu không có cách nào ở trên thành công, logback sẽ tự động cấu hình bằng cách sử dụng [BasicConfigurator](https://logback.qos.ch/xref/ch/qos/logback/classic/BasicConfigurator.html) nó sẽ ghi log và chuyển hướng đến console (Mặc định là console).

Appender Tag

Appender là một component có nhiệm vụ ghi các sự kiện logging. Trong thẻ appender, chúng ta có thẻ encoder, trong đó chúng ta chỉ định định dạng của thông báo logging trong thẻ mẫu. Có hai loại appender là consolefile. Appender có hai tên thuộc tính và lớp xác định đó là trình file appender hay console appender. Chúng ta sẽ sử dụng thẻ encoder trong khi xác định các phần phụ như được cung cấp bên dưới. Về cơ bản, nó được sử dụng để chuyển đổi event ghi log thành byte arrayghi log trên outputStream.

Console Appender

Nhìn tên thôi là biết nó sẽ ghi log lên console.

<configuration><appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern></encoder></appender><rootlevel="DEBUG"><appender-refref="STDOUT"/></root></configuration>

Thuộc tính name của appenderSTDOUT đại diện cho appenderconsole appender. Trong thuộc tính class, chúng ta chỉ định lớp của console appender. File Appender nó sẽ ghi log vào tệp. Nếu appenderfile appender, thì nó có thẻ file có đường dẫn đến nơi lưu trữ tệp logging.

<configuration><appendername="FILE"class="ch.qos.logback.core.FileAppender"><file>testFile.log</file><!-- encoders are assigned the type
            ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender><rootlevel="DEBUG"><appender-refref="FILE"/></root></configuration>

Tham khảo Tài liệu

chính thức của SL4J.

Roudup

Như mọi khi, mình hy vọng bạn thích bài viết này và biết thêm được điều gì đó mới.

Cảm ơn và hẹn gặp lại các bạn trong những bài viết tiếp theo! 😍

Nếu bạn thấy thích blog của mình thì nhấn theo dõi để ủng hộ mình nhé. Thank you.😉

Ref

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ