gpt4 book ai didi

Java logback 嵌套变量替换

转载 作者:行者123 更新时间:2023-12-01 10:09:30 25 4
gpt4 key购买 nike

我有一个像这样的日志语句:

private static final Logger LOGGER = LoggerFactory.getLogger(Foo.class);

long elapsedTime = 8348; //test value
LOGGER.info("message:{},timestamp:{}",
"Finished execution in {} milliseconds", elapsedTime,
LocalDateTime.now());

我希望将前 2 个 {} 替换为字符串消息和本地日期时间。但消息中的第三个 {} 应替换为 long。所以它应该记录:

INFO  app.Foo - message:Finished execution in 8348 milliseconds,timestamp:2016-03-25T13:55:05.026

但它记录的是:

INFO  app.Foo - message:Finished execution in {} milliseconds,timestamp:5017

有什么办法可以使用嵌套变量替换来记录日志吗?我可以像这样连接字符串

long elapsedTime = 8348; //test value
LOGGER.info("message:{},timestamp:{}",
"Finished execution in " + elapsedTime + " milliseconds",
LocalDateTime.now());

但我想避免繁琐的连接。

最佳答案

它不会以这种方式工作,因为消息值只是被替换而不是被解析。 var arg 参数用于主要消息格式。

我可以想到以下两种选择。

LOGGER.info("message:Finished execution in {} milliseconds,timestamp:{}", elapsedTime,
LocalDateTime.now());

或者

LOGGER.info("message:{},timestamp:{}", String.format("Finished execution in %s milliseconds",
elapsedTime), LocalDateTime.now());

关于Java logback 嵌套变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com