如何使用PHP SDK在Temporal Activity中实现日志记录?
在Temporal PHP Activity中记录日志的方法
在Temporal PHP的Activity中记录日志,有两种可靠的方式,完全不需要依赖heartbeat功能:
方法一:通过依赖注入注入日志实例
如果你的项目使用依赖注入容器(比如Symfony DI、Laravel容器等),最规范的方式是在Activity类的构造函数中注入Psr\Log\LoggerInterface实例,直接使用:
use Psr\Log\LoggerInterface; class YourActivity implements YourActivityInterface { private LoggerInterface $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; } public function run(string $taskInput): string { $this->logger->info('Activity开始执行', ['输入参数' => $taskInput]); // 执行你的业务逻辑 $this->logger->debug('关键步骤执行完成'); return '处理结果'; } }
这种方式符合依赖注入的最佳实践,便于测试和日志实例的统一管理。
方法二:通过Activity上下文获取日志实例
如果无法使用依赖注入,也可以在Activity的方法内部通过Activity::getContext()获取Activity上下文,再调用上下文的getLogger()方法拿到日志实例:
use Temporal\Activity\Activity; use Psr\Log\LoggerInterface; class YourActivity implements YourActivityInterface { public function run(string $taskInput): string { /** @var LoggerInterface $logger */ $logger = Activity::getContext()->getLogger(); $logger->info('Activity启动', ['输入' => $taskInput]); // 业务逻辑处理 $logger->warning('检测到非预期状态', ['状态详情' => 'xxx']); return '执行结果'; } }
这两种方式都和heartbeat功能完全独立,仅用于日志记录,满足你的需求。
内容的提问来源于stack exchange,提问作者chx
相关产品推荐
相关产品推荐

