是否有一个字符串格式化程序将使用与 SLF4J 相同的语法?
Is there a string formatter that will use the same syntax as SLF4J?
我(显然)熟悉 String.format()
和 MessageText.format()
- 我也理解 Slf4j
日志记录中使用的字符串格式化语法;令人沮丧的是,它们各不相同且互不相容。
我正在寻找的是一个类似于 MessageText.format()
的函数,它与 slf4j 记录器的格式化程序完全一样,因此我可以在日志消息和(例如)异常中使用相同的字符串常量消息:
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,
foo, bar));
}
不幸的是,MessageText
需要位置说明符 ({0}
) 而 Slf4j 非常讨厌它。
有什么东西可以做到这一点吗?
(很明显,很明显!,我可以自己写这个方法,但如果已经有比我更好的程序员完成了,我会很乐意改用它)。
非常感谢。
尝试:
import org.slf4j.helpers.MessageFormatter;
你有:
MessageFormatter.format(messagePattern, arg).getMessage();
我(显然)熟悉 String.format()
和 MessageText.format()
- 我也理解 Slf4j
日志记录中使用的字符串格式化语法;令人沮丧的是,它们各不相同且互不相容。
我正在寻找的是一个类似于 MessageText.format()
的函数,它与 slf4j 记录器的格式化程序完全一样,因此我可以在日志消息和(例如)异常中使用相同的字符串常量消息:
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,
foo, bar));
}
不幸的是,MessageText
需要位置说明符 ({0}
) 而 Slf4j 非常讨厌它。
有什么东西可以做到这一点吗?
(很明显,很明显!,我可以自己写这个方法,但如果已经有比我更好的程序员完成了,我会很乐意改用它)。
非常感谢。
尝试:
import org.slf4j.helpers.MessageFormatter;
你有:
MessageFormatter.format(messagePattern, arg).getMessage();