@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的表达式中添加任何副作用。