@Log (and friends)
船長的日志,標(biāo)榜24435.7:“又是什么線?”
@Log在lombok v0.10中添加了 各種變體哑了。 lombok 0.10中的新功能:您可以使用日志注釋對任何類進行注釋贝润,以使lombok生成記錄器字段。
記錄器已命名log跌帐,字段的類型取決于您選擇的記錄器首懈。
lombok v1.16.24中的新功能:添加了Google的FluentLogger(flogger)。
Overview
你把@Log你的類的變體(適用于你使用的日志系統(tǒng)); 然后谨敛,您有一個靜態(tài)的final log字段究履,初始化為您的類的名稱,然后您可以使用它來編寫日志語句脸狸。
有幾種選擇:
@CommonsLog
創(chuàng)建
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Flogger
創(chuàng)建
private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();
@JBossLog
創(chuàng)建
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
創(chuàng)建
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
創(chuàng)建
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
創(chuàng)建
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
創(chuàng)建
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
創(chuàng)建
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
默認情況下最仑,記錄器的主題(或名稱)將是使用@Log注釋注釋的類的類名〈都祝可以通過指定topic參數(shù)來自定義泥彤。例如:@XSlf4j(topic="reporting")
。
With Lombok
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
@Log
public class LogExample {
public static void main(String... args) {
log.severe("Something's wrong here");
}
}
@Slf4j
public class LogExampleOther {
public static void main(String... args) {
log.error("Something else is wrong here");
}
}
@CommonsLog(topic="CounterLog")
public class LogExampleCategory {
public static void main(String... args) {
log.error("Calling the 'CounterLog' with a message");
}
}
Vanilla Java
public class LogExample {
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
public static void main(String... args) {
log.severe("Something's wrong here");
}
}
public class LogExampleOther {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);
public static void main(String... args) {
log.error("Something else is wrong here");
}
}
public class LogExampleCategory {
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog("CounterLog");
public static void main(String... args) {
log.error("Calling the 'CounterLog' with a message");
}
}
Supported configuration keys:
lombok.log.fieldName = an identifier (default: log).
lombok.log.fieldIsStatic = [true | false] (default: true)
lombok.log.flagUsage = [warning | error] (default: not set)
lombok.log.xxx.flagUsage = [warning | error] (default: not set)
Small print
如果log已存在已調(diào)用的字段卿啡,則將發(fā)出警告吟吝,并且不會生成任何代碼。
lombok的各種日志注釋的未來特性是找到對logger字段的調(diào)用颈娜,如果所選的日志記錄框架支持它剑逃,并且日志級別可以是從日志調(diào)用確定的編譯時間,則使用if語句來保護它官辽。這樣蛹磺,如果最終忽略了日志語句,則完全避免了可能昂貴的日志字符串計算野崇。這意味著你要不要放在您登錄表達任何副作用称开。