我想用SLF4J格式化我的双打并浮动到一定数量的小数位。
基本上,我在SLF4J中寻找相当于Java的String.format("%.2f", floatValue)
。
阅读了SLF4J的文档并在谷歌上搜索我无法找到它是否具有该功能的提示。
我正在使用slf4j-api:1.7.6
和slf4j-jdk14:1.7.6
非常感谢任何帮助。
答案 0 :(得分:23)
我假设您指的是SLF4J扩展参数的惯例,例如:
float f;
...
logger.debug("My number is {}", f);
所以,答案是否定的。从SLF4J 1.7.7开始,您要求做的事情是不可能的,因为SLF4J的扩展算法不允许自定义渲染器(例如通过Log4J可用的渲染器)。
但似乎值得一个功能请求。
修改强>:
嗯,
{}
是"仅支持"出于性能考虑,当前的格式化实现优于String.format()10次。 http://www.slf4j.org/faq.html#logging_performance 所以它不太可能改变
(source)
答案 1 :(得分:16)
一个有点丑陋的解决方案会导致创建一个临时对象,可能就是这个
public class DelayedFormatter{
String format; Object[] args;
public DelayedFormatter(String format, Object... args){
this.format = format; this.args = args;
}
public static DelayedFormatter format(String format, Object... args){
return new DelayedFormatter(format, args);
}
@Override public String toString(){
return String.format(format, args);
}
}
然后
import static DelayedFormatter.format;
...
logger.debug("v = {}", format("%.03f", v));