是否有针对slf4j的Java 1.5 varargs API?

Jos*_*osh 24 java logging variadic-functions slf4j

我想摆脱这一批......

public void info(String msg);
public void info(String format, Object arg);
public void info(String format, Object arg1, Object arg2);
public void info(String format, Object[] argArray);
Run Code Online (Sandbox Code Playgroud)

......并用这个替换它......

public void info(String format, Object ... args);
Run Code Online (Sandbox Code Playgroud)

...这样我的日志记录语法就不必根据我想记录的参数数量而改变.似乎有很多讨论和解决方法,但它在哪里?或者我应该包装slf4j的包装器?

小智 14

真正的问题是"为什么必须再支持jdk <5"?如果您有旧版本的Java,请使用旧版API.就这么简单.为什么不把它更好地融入当前的Java世界呢?我的意思是,如果没有Sun/Oracle的支持合同,甚至不支持JDK 5.在这种情况下,向后兼容性是一个笑话.

  • 我不明白...为什么不使slf4j 2.x与Java 5兼容,并保持slf4j 1.x与java 0.0.1兼容? (2认同)

Chr*_*ter 11

这终于解决了.SLF4J 1.7.0现在需要JDK 1.5并且具有向后兼容的varargs方法.


Tho*_*sen 7

没有.

问题仍然存在,如何在保持100%向后兼容性的同时做到正确.

欢迎在http://bugzilla.slf4j.org/show_bug.cgi?id=31上查看讨论


小智 5

那这个呢:

package util;

public class Util {
  public static Object[] va(Object... args) {
    return args;
  }
}

package foo;
import static util.Util.va;
...
 logger.info("a {}, b {}, c c {}", va("A", "B", "C"));
...
Run Code Online (Sandbox Code Playgroud)

你也可以在其他地方使用va().


Mar*_*ark 4

通过阅读Logger的 SLF4J javadoc,简单的答案似乎是否定的。据我了解,他们希望与旧版本的 JDK 保持兼容。

如果您并不真正依赖于使用 SLF4J 那么也许log5j是一个选择?