[英]Which is the best way to declare logger variable in java
我只是想知道在 java 中聲明記錄器變量的最佳方式是什么。 以下是一些聲明。
1> private static final Logger logger = Logger.getLogger(ServiceImpl.class);
2> private static Logger logger = Logger.getLogger(ServiceImpl.class);
3> private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
4> private static Logger LOGGER= Logger.getLogger(ServiceImpl.class);
PS,如果有人知道聲明 looger 變量的另一種最佳替代方法,我真的很感激。
所有大寫變量名都是 IMO,因為您實際上不是在聲明/定義常量而是靜態變量。 大寫名稱更適合“常量”。 也就是說,我個人會采用第一種方法。
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
我投3票
private static final Logger LOGGER = Logger.getLogger(ServiceImpl.class);
它是final
因為你沒有改變它,它是大寫的,因為它是一個常數。
我個人認為private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
是出於語義和性能原因的最佳方法:
我會選擇第一個選項,但我想這是個人選擇的問題。
我建議不要在每個類中都使用這樣的變量,而是將這項工作委托給jcabi-log 中圍繞 slf4j 的靜態實用程序包裝器:
Logger.debug(this, "some variable = %s", value);
也檢查這篇文章: http : //www.yegor256.com/2014/05/23/avoid-java-static-logger.html
在特定類的所有實例之間共享單個記錄器對象並在程序運行期間使用相同的記錄器是一種很好的編程習慣,因此我們對記錄器使用static
和final
。
不建議使用多個記錄器(糟糕的記錄實踐)而不是記錄級別。
我覺得
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
是更好的選擇。
這里沒有人使用LOG
或log
嗎? 我發現它在實踐中更好。 (當然,我不是第一個在標准的地方工作的人,因為 Lombok 中的@Log4j
也會生成一個log
字段。當然它也是靜態最終的。順便說一句,這是聲明該字段的最佳方式。 .. 添加@Log4j
注釋。完成。)
private static final Logger LOGGER = Logger.getLogger(NameClass.class.getName());
其中 logger 是最終的,已解決的變量應以大寫形式定義。 雖然 getLogger() 靜態方法需要 String 作為參數,但類名也應該調用類的 .getName() 。
@Slf4j 注釋可以幫助解決這個問題。
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class CustomClassName {
void customMethod(){
log.info("Shorthand logger annotation example");
}
}
第一個是最好的。我更喜歡記錄器是final
和static
......
在我對 java 風格指南的理解中,'logger' 是最好的。 'LOGGER' 將用於定義的常量。
此外,使用“final”應該會使其更快一些。
因此#1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.