operators#lift:mdc日志记录的好主意?

c9qzyr3d  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(410)

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 似乎表明了这一点。如果这是真的,那么在实践中,这对性能的影响有多大?
任何意见都将不胜感激!

u7up0aaq

u7up0aaq1#

这是最初由侦探通过 Hooks.onEachOperator . 然而,这是非常昂贵的,而且如果您只需要在React性管道中的一部分操作上记录日志/mdc,那么这可能不值得。更不用说这种方法不仅会影响您定义的React步骤,还会影响任何其他库/框架。
这样做的原因是:更好的控制,更少的影响和更明确的方法。

相关问题