Lombok的@CustomLog流暢的公司多場景日志
開發(fā)環(huán)境
- JDK 1.8
- Lombok - 1.18.16
背景
公司因為開源節(jié)流需要,需要區(qū)分重要日志和非重要日志,一個月光日志的費用有30w之多確實恐怖了一些(PS:夠幾十個程序員的工資了)。所以,公司要求將日志區(qū)分開,去除一些非必要的日志,記錄的日志也最多保留15天,重要日志30天。
為了區(qū)分場景日志,單獨搞了個Logger日志記錄器來采集日志,為了繼續(xù)用注解的方式在項目中,這時就需要@CustomLog注解了,方便的將多個日志記錄器集成在一起,話不多說,開干!
如果在項目中直接使用@CustomLog注解,你會看到如下圖的報錯信息:

這個時候需要添加配置文件lombok.config,在項目中就可以直接使用了!
特別注意:配置文件的位置需要在@CustomLog注解所在文件的上層目錄,我為了方便通常直接放在模塊的根目錄或項目的根目錄進行使用。

添加的配置信息如下:
lombok.log.custom.declaration=com.lombok.log.IntegrationLog com.lombok.log.IntegrationLog.getLogger(TYPE)
注意,com.lombok.log.IntegrationLog 與com.lombok.log.IntegrationLog.getLogger(TYPE)中間是有空格的,這樣才能生效。至于getLogger的小括號內(nèi)部,有兩個值可以使用,分別是TYPE(類的類型)和NAME(類的名稱)。
TYPE方式生成的代碼
private static final IntegrationLog log = IntegrationLog.getLogger(LogPrintService.class);
NAME方式生成的代碼
private static final IntegrationLog log = IntegrationLog.getLogger("com.lombok.service.LogPrintService");
配置成功的前提,是你的類要符合配置要求,也就是按照lombok的規(guī)范去定義類即可。
代碼部分
為了方便鑒將多個日志記錄器放在一起,必然需要一個集成類,這里我定義一個名為IntegrationLog的類,除了默認的Logger日志對象,還有一個業(yè)務(wù)記錄器對象BusinessLog,用于記錄比較重要的日志。當(dāng)定義好此類后,完成上述的配置即可。
public class IntegrationLog {
private final Logger logger;
private final BusinessLog bizLogger;
private IntegrationLog(Class<?> clazz) {
this.logger = LoggerFactory.getLogger(clazz);
this.bizLogger = BusinessLog.getLogger(clazz);
}
public static IntegrationLog getLogger(Class<?> clazz) {
return new IntegrationLog(clazz);
}
public void info(String format, Object... args) {
logger.info(format, args);
}
public void bizInfo(String format, Object... args) {
bizLogger.info(format, args);
}
}
再看看注解使用的代碼部分
代碼中我們就可以暢快的使用了,一個log對象包括了我們想要的方法。
@CustomLog
public class LogPrintService {
public void printLog() {
log.bizInfo("需要多付錢的日志");
log.info("默認日志");
}
}
通過查看源碼,就可以看到Lombok給我們生成了什么樣的代碼:
public class LogPrintService {
private static final IntegrationLog log = IntegrationLog.getLogger(LogPrintService.class);
public LogPrintService() {
}
public void printLog() {
log.bizInfo("哈哈哈哈", new Object[0]);
}
}
其實Lombok做的事情,就是幫我們創(chuàng)建了一個實例,簡單易懂。
參考文獻
Lombok的Log介紹 - projectlombok.org/features/lo…
以上就是Lombok的@CustomLog流暢的公司多場景日志的詳細內(nèi)容,更多關(guān)于Lombok @CustomLog多場景日志的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot版本升級以及解決springsecurity漏洞的問題
這篇文章主要介紹了springboot版本升級以及解決springsecurity漏洞的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Java實現(xiàn)map轉(zhuǎn)換成json的方法詳解
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)map轉(zhuǎn)換成json的幾種方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下2022-05-05
Springboot如何使用@Async實現(xiàn)異步任務(wù)
這篇文章主要介紹了Springboot如何使用@Async實現(xiàn)異步任務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

