我在 Spring Boot 应用程序中将 SLF4J 与 Logback 结合使用。我对使用惰性日志记录很感兴趣,经过一些研究,我想出了这个解决方案。
这将按预期工作,并且如果日志记录级别不匹配,则不会调用方法。
logger.debug("Begin proceed aspect Method {} : initiator={} | recepient={} | tx_type={}",
new Object() {@Override public String toString() { return proceedingJoinPoint.getSignature().getName(); }},
new Object() {@Override public String toString() { return request.getAgentAlias(); }},
new Object() {@Override public String toString() { return request.getSubscriberMobile(); }},
new Object() {@Override public String toString() { return request.getTxType(); }});
如您所见,我正在创建新对象并一遍又一遍地重写 toString 方法。我不想这样做。有一个更好的方法吗?
我使用的是 SLF4J 1.7.28 版本,它与 Spring Boot 启动器捆绑在一起。 请注意,与其他日志框架相比,我更喜欢使用 SLF4J。
我尝试了 slf4j-api 2.0.0-alpha1 版本以及 slf4j-simple 绑定(bind),因为它具有 logger.atDebug.log() 实现。但我无法让它正常工作。
谢谢。
最佳答案
如果您想添加一些条件行,您可以添加 if 语句来检查日志级别是否启用,然后记录消息。
延迟加载被保留,但你会得到类似的东西:
if(log.isDebugEnabled()) {
log.debug(....);
}
关于java - 使用 SLF4J 简化延迟日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61226307/