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.
- Logback cố gắng tìm một tệp có tên logback-test.xml trong classpath.
- 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.
- Nếu không tìm thấy tệp nào như vậy, nó sẽ test tệp logback.xml trong classpath.
- 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 khaiConfigurator
như mong muốn. - 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à console và file. 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 array và ghi 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 appender là STDOUT đại diện cho appender là console 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 appender là file 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)
All rights reserved