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

如何在Mojo::Log的format回调中获取Hypnotoad Worker ID?

解决方案

要在Mojo::Log的格式化回调中获取Hypnotoad Worker ID,直接读取Hypnotoad自动设置的**环境变量HYPNOTOAD_WORKER**即可,这个变量的值和标准日志中显示的Worker ID完全一致。

修改后的代码

my $log = Mojo::Log->new(path => $logPath, level => 'debug');
$log->format(\&logFormat);

sub logFormat {
    my ($time, $level, @lines) = @_;

    my $now = localtime_to_iso8601_datetime({second_precision => 5}, $time);
    $now =~ s/T/ /;
    # custom Http Request ID is sent as last line
    my $httpRequestId = pop(@lines);
    # 读取Hypnotoad Worker ID,非Hypnotoad环境下用默认值'0'兜底
    my $currentWorkerId = $ENV{HYPNOTOAD_WORKER} // '0';
    # [2024-06-13 09:36:06.19863] [1] [debug] [123456789]
   
    return "\n[$now] [$currentWorkerId] [$level] [$httpRequestId] @lines";
}

补充说明

  • Hypnotoad启动每个Worker进程时,会自动为该进程设置HYPNOTOAD_WORKER环境变量,值为从1开始递增的整数(第一个Worker是1,第二个是2,以此类推)。
  • 如果你的代码可能在非Hypnotoad环境下运行(比如开发模式的morbo),可以用//操作符设置兜底值,避免出现空值。

内容的提问来源于stack exchange,提问作者Michael2000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:17:22