@Log (and friends) - codercuixin/lombok-translate GitHub Wiki
@Log (and friends)
Captain's Log, stardate 24435.7: "What was that line again?"
在 lombok v0.10 中添加了各种 @Log
变体。 lombok 0.10 中的新功能:你可以使用日志注解对任何类进行注释,以使lombok生成一个Logger 字段。
Logger 名为 log
,字段的类型取决于你选择何种Logger。
lombok v1.16.24 中的新功能:添加谷歌的FluentLogger(flogger).
概览
你把 @Log
的变体放在你的类上(无论哪一个变体适用于你使用的日志系统); 然后你就会得到一个static final log
字段,初始化为你的类的名称,然后你可以使用它来编写日志语句。
有几种选择:
@CommonsLog
创建
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Flogger
创建
private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();
@JBossLog
创建
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
创建
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
创建
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
创建
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
创建
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
创建
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
默认情况下, Logger的主题(或名称)将是使用@Log注解注释的类的类名。 可以通过指定 topic
参数来自定义。 例如@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");
}
}
支持的配置键
lombok.log.fieldName
=一个标识符(默认值:log
)。
生成的 Logger 字段名默认为log
,但你可以使用此设置将其更改为其他名称。
lombok.log.fieldIsStatic
= [ true
| false
](默认值:true)
通常,生成的记录器logger是 static
字段。通过将此键设置为 false
,生成的字段将是实例字段。
lombok.log.flagUsage
= [warning
|error
](默认:未设置)
如果已配置,Lombok 会将任何各种日志注释的任何用法标记为警告或错误。
lombok.log.apacheCommons.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.apachecommons.CommonsLog
的任何用法标记为警告或错误。
lombok.log.flogger.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 将标记 @lombok.extern.flogger.Flogger
的任何用法作为警告或错误。
lombok.log.jbosslog.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.jbosslog.JBossLog
的任何用法标记为警告或错误。
lombok.log.javaUtilLogging.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.java.Log
的任何用法标记为警告或错误。
lombok.log.log4j.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.log4j.Log4j
的任何用法标记为警告或错误。
lombok.log.log4j2.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 将标记 @lombok.extern.log4j.Log4j2
的任何用法作为警告或错误。
lombok.log.slf4j.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.slf4j.Slf4j
的任何用法标记为警告或错误。
lombok.log.xslf4j.flagUsage
= [ warning
| error
](默认:未设置)
如果已配置,Lombok 会将 @lombok.extern.slf4j.XSlf4j
的任何用法标记为警告或错误。
Small print
如果已存在名为 log
的字段,则将发出警告,并且不会生成任何代码。
lombok 的各种日志注释的未来特性是查找对 logger 字段的调用,如果所选的日志记录框架支持它,并且日志级别可以是从日志调用确定的编译时,则使用 if
语句保护它。 这样,如果最终忽略了日志语句,则完全避免了可能昂贵的日志字符串计算。 这意味着你不应该在你log的表达式中添加任何副作用。