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

如何在K语言日志函数中获取调用方函数名(无额外参数)

在K语言中实现自动追加调用方函数名的.log.err日志函数

实现方案

直接重定义.log.err,利用K内置的调用上下文信息自动获取调用方函数名,无需额外参数,同时保持原有的性能与简洁性:

.log.err:{[msg] (-2; msg," ",first key value .z.p)[]}

验证示例

定义调用函数:

f1:{.log.err"log error msg"}

执行f1[]后,标准错误流会输出:

log error msg f1

原理说明

  • .z.p指向当前函数的父执行上下文,即调用.log.err的函数所在环境
  • value .z.p解析该上下文的元数据,key提取其中的函数名标识,first取出唯一的函数名称
  • 原函数向标准错误(句柄-2)输出的核心逻辑完全保留,仅新增字符串拼接操作,性能损耗可忽略,未增加复杂度

边界情况说明

如果直接在全局作用域调用.log.err(而非函数内部),value .z.p会返回全局环境,此时first key value .z.p可能返回空或全局命名空间标识,可根据需求添加简单判断,但这属于可选扩展,不影响核心功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:57:17