You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 02:52:30