当前位置: 首页 > 知识库问答 >
问题:

记录器slf4j使用{}而不是字符串串联进行格式设置的优点

拓拔弘化
2023-03-14

使用{}代替字符串串联有什么好处吗?

slf4j示例

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);

我认为这是关于速度优化的,因为参数评估(和字符串级联)可以在运行时避免,这取决于配置文件。但只有两个参数是可能的,那么有时除了字符串串联没有其他选择。需要关于这个问题的意见。

共有1个答案

马祺
2023-03-14

它是关于字符串级联性能的。如果您有密集的日志记录语句,这可能很重要。

(在SLF4J 1.7之前),但只有两个参数是可能的

因为绝大多数日志记录语句都有2个或更少的参数,所以直到1.6版的SLF4J API(仅)覆盖了大部分用例。自API1.7版起,API设计者就提供了带有varargs参数的重载方法。

对于需要2个以上并且仍然使用1.7之前的SLF4J的情况,只需使用字符串级联或new object[]{param1,param2,param3,...}即可。它们应该很少,以至于性能不那么重要。

 类似资料:
  • 我有一个关键字列表,我想从中创建一个名为的特定查询。我有一个查询后缀,我想返回一个字符串,它以开头,后面跟着每个关键字从: 大概是这样的: 我希望返回的字符串看起来像这样:

  • 问题内容: 我想知道是否有可能在Java中使用String.format方法给出一个在零之前的整数? 例如: 1将变为001 2将变为002 … 11将变为011 12将变为012 … 526将保留为526 … 目前,我尝试了以下代码: 不幸的是,它在数字之前带有3个空格。可以在数字前加零吗? 问题答案: 使用格式说明为整数。的装置,该数目将是零填充,如果它是少于三个(在这种情况下)位。 有关其他

  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果

  • 问题内容: 我看到许多人使用这样的格式字符串: 而不是像这样简单地串联字符串: 格式字符串是否具有更好的性能,还是仅用于外观? 问题答案: 这只是为了外观。您可以一眼看出格式是什么。我们中的许多人都比微优化更喜欢可读性。 让我们看看IPython的意思:

  • 问题内容: 我正在开发一个应用程序,在其中执行一些请求以获取对象ID。在它们每个之后,我调用一个方法()将此id作为参数传递(请参见下面的代码)。 可以注意到,我正在将其转换为前缀并将其与前缀连接。但是,我知道我能做到这一点的多种其他方式(或者,例如),并在我的问题的结果:将超过字符串连接更好的可读性,代码约定和效率方面? 谢谢 问题答案: 这很容易成为基于意见的主题,但是我发现格式在大多数情况下

  • Edit:不幸的是,我需要以日期的形式获得结果,而不是字符串,所以我不能使用sdf.format(New Date().getTime()),因为它返回字符串。另外,我需要返回的日期是当前时间的日期,而不是来自静态字符串。我希望这能澄清