[英]Standard way to implement a Logger across classes in Java?
我正在構建一個包含許多類的Javafx應用程序。 我想從所有類中使用java日志記錄。 但是所有選項似乎都帶有過多或重復的代碼。 這些是我能想到的:
將Logger聲明為每個類中的私有靜態final字段,即
private static final Logger LOGGER = Logger.getLogger(MyClass.class.getName());
這個選項似乎有點煩人,必須在每個班級都這樣做。
再次似乎並不優雅
那你們怎么處理這種情況呢? 這只是選擇最不好選擇的問題嗎?
選項1與選項3相結合(就像人們提到的使用類似slf4j的包裝器)將允許在實現之間進行切換被廣泛使用。
declare Logger as a private static final field in each class i.e.
private static final Logger LOGGER = Logger.getLogger(MyClass.class.getName());
聲明一個記錄器並不是什么大問題,你應該能夠在IDE中定義一個新的類模板,它自動生成記錄器代碼。
我不同意第三種選擇的“過度”:“包裝”選項實際上相當優雅,因為它有一個專用的記錄器類( SRP ),它允許你切換實現( log4j , apache-commons-logging , java。 util.logging etc)“引擎蓋下”沒有將其余代碼耦合到該實現。
正如Luiggi在下面的評論中提到的那樣, SLF4J就是這樣的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.