是否有一个字符串格式化程序将使用与SLF4J相同的语法?

问题描述

(显然)我对String.format()MessageText.format()都很熟悉-我也了解Slf4j日志记录中使用的字符串格式语法;令人沮丧的是它们都是不同且不兼容的。

我要寻找的是类似MessageText.format()函数,该函数与slf4j记录器的格式化程序完全一样,因此我可以在日志消息和(例如)异常消息中使用相同的String常量:

public static String THIS_HAPPENED = 
        "Unfortunately,foo was {},but bar ({}) was not";

// ...

if (somedisaster(foo,bar)) {
    log.error(THIS_HAPPENED,foo,bar);
    throw new IllegalStateException(MessageText.betterFormat(THIS_HAPPENED,bar));
}

不幸的是,MessageText需要位置说明符({0}),Slf4j对此非常讨厌。

这里有东西吗?

(显然,很明显!我可以自己编写该方法,但是如果编码员已经比我更好地完成了该方法,那么我会很乐意使用它)。

非常感谢。

解决方法

尝试:

switch-case

您有:

if-else