project reactor文档为mdc日志记录提供了以下模式:
.doOnEach(logOnNext(r -> LOG.debug("found restaurant {} for ${}", r.getName(), r.getPricePerPerson())))
为了避免必须 Package 每个日志调用,在每个信号之前从currentcontext填充mdc的自定义订阅者是否会使用 Hooks.onEachOperator(Operators.lift(...)
)是个好主意吗?
我的主要目标是:
1.)在每个信号之前填充mdc的成本,即使没有发生日志记录。
2.)操作员融合:does Operators.lift(...)
在每个操作符上有效地禁用操作符融合?尝试快速测试 StepVerifier#expectFusion
似乎表明了这一点。如果这是真的,那么在实践中,这对性能的影响有多大?
任何意见都将不胜感激!
1条答案
按热度按时间u7up0aaq1#
这是最初由侦探通过
Hooks.onEachOperator
. 然而,这是非常昂贵的,而且如果您只需要在React性管道中的一部分操作上记录日志/mdc,那么这可能不值得。更不用说这种方法不仅会影响您定义的React步骤,还会影响任何其他库/框架。这样做的原因是:更好的控制,更少的影响和更明确的方法。