+8

Trên tay nhanh SLF4j logging 😊 (Series: Java Handbook - Phần 3)

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-INF\services\ch.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>
  <appender name="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>

  <root level="DEBUG">
    <appender-ref ref="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>
    <appender name="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>
        
    <root level="DEBUG">
        <appender-ref ref="FILE" />
    </root>
</configuration>

Tham khảo Tài liệu

chính thức của SL4J.

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

Donate mình một ly cafe hoặc 1 cây bút bi để mình có thêm động lực cho ra nhiều bài viết hay và chất lượng hơn trong tương lai nhé. À mà nếu bạn có bất kỳ câu hỏi nào thì đừng ngại comment hoặc liên hệ mình qua: Zalo - 0374226770 hoặc Facebook. Mình xin cảm ơn.

Momo: NGUYỄN ANH TUẤN - 0374226770

TPBank: NGUYỄN ANH TUẤN - 0374226770 (hoặc 01681423001)

image.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí