在过去,当对 Web 应用程序的每个请求都由一个线程处理时,很容易理解日志。例如,可以使用 servlet 过滤器来命名处理具有某种请求 ID 的请求的线程。然后可以在日志中输出此请求 ID。在这个世界上,只需要一个简单的 grep 就可以收集给定请求的日志行。
在我目前的职位上,我正在使用 Scala 构建 Web 应用程序(我们使用的是 Scalatra,但这与我的问题并不特别相关)。每个请求都会创建一个 scala.concurrent.Future ,然后将其停放在该未来完成之前。这里重要的一点是,实际处理业务逻辑的线程与处理请求的线程不同(我认为)与完成请求的线程不同,因此该请求的上下文在处理过程中丢失。业务逻辑可以记录它喜欢的所有内容,但很难将该记录与其相关的特定请求相关联。
现在从在生产中支持我的 Web 服务的角度来看,旧方法很棒,我想为我的异步服务提供类似的东西。我一直在尝试想出一种方法来做到这一点,但是却一无所获。也就是说,我还没有想出像旧的名称线程模型那样轻量级的东西。Stack Overflow 人群有什么建议吗?
谢谢