Thông thường, khi chúng ta sử dụng các Logging frameworks như Log4J, Logback hay Simple Logging Facade for Java (SLF4J), chúng ta cần phải khai báo như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.huongdanjava.lombok; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Example { public static final Logger LOGGER = LoggerFactory.getLogger(Example.class); public void print(String message) { LOGGER.info(message); } } |
Nhưng đối với Project Lombok, chúng ta không cần phải làm như thế.
Khi sử dụng Project Lombok, chúng ta chỉ cần khai báo annotation dành cho Logging framework mà chúng ta muốn sử dụng mà thôi, sau đó thì có thể sử dụng như bình thường. Ở ví dụ trên, mình đang sử dụng Simple Logging Facade for Java thì mình sẽ khai báo annotation @Slf4j của Project Lombok dành cho thư viện này như sau:
1 2 3 4 5 6 7 8 9 10 11 |
package com.huongdanjava.lombok; import lombok.extern.slf4j.Slf4j; @Slf4j public class Example { public void print(String message) { log.info(message); } } |
Nếu các bạn kiểm tra tập tin Example.class nằm trong thư mục /target/classes/com/huongdanjava/lombok/, các bạn sẽ thấy nội dung của tập tin này như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.huongdanjava.lombok; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Example { private static final Logger log = LoggerFactory.getLogger(Example.class); public Example() { } public void print(String message) { log.info(message); } } |
Rõ ràng, như các bạn thấy, Project Lombok sẽ generate code để khai báo đối tượng Logger trong class Example một cách tự động.
Bên dưới là những annotation dành cho những Logging frameworks khác:
- @CommonsLog: org.apache.commons.logging.Log
- @JBossLog: org.jboss.logging.Logger
- @Log: java.util.logging.Logger
- @Log4j: org.apache.log4j.Logger
- @Log4j2: org.apache.logging.log4j.Logger
- @XSlf4j: org.slf4j.ext.XLogger