RestasyClientBuilder的build()过程,以及注入tracingLogger的方式
RESTEasy提供两种创建client的方式:
文档中介绍的两种方式如下:

实际上JAX-RS标准的ClientBuilder的build()方法是依赖于具体实现的:

因此查看RestasyClientBuilder就好:

这里的config的类型是ClientConfiguration:
ClientConfiguration config = new ClientConfiguration(getProviderFactory());
build()最后的逻辑如下:

看到config和其它参数一起被传入createRestesayClient(...)方法:

可以看到所有的参数最终传入ResteasyClient的constructor。
有了ResteasyClient,就可以进行客户端的call:

那么我们应该是让tracing logger跟着invocation来走的。从上面看到,client进行请求的时候,是创建web target,而Resteasy当中实际的实现是ClientWebTarget:

在ClientWebTarget当中,重点是构架ClientInvocationBuilder:

而invocation builder则是构建invocation来负责实际的request:

以下是这些classes的整体设计:

综上所述,得出结论如下:
- 我们可以通过
ResteasyProviderFactory设置TracingLogger的级别。 - Client这边的tracingLogger的生成life scope应该是per invocation。
- Client这边并没有
ON_DEMANDtracing mode。要么ALL,要么OFF
具体的实现以最终代码为准。