如何获取并保存cwl-runner运行工作流时的中间调试日志?
获取CWL运行日志及中间步骤输出的方法
一、捕获终端全量日志到文件
cwl-runner的终端输出本身包含所有步骤的执行日志,直接用shell重定向就能把所有内容保存到指定文件:
cwl-runner workflow.cwl inputs.yml > run_full.log 2>&1
>将标准输出(常规日志)写入run_full.log2>&1将标准错误(报错信息)也重定向到同一个文件,确保日志完整
二、使用cwltool的专用日志参数
cwl-runner是cwltool的封装,直接用cwltool的日志参数可以更灵活地管理日志:
--log-dir <目标目录>:将每个步骤的日志单独保存到指定目录下,每个步骤对应一个独立的日志文件,同时终端仍会输出汇总日志--debug:生成更详细的调试日志,包含中间步骤的执行细节,适合排查问题--quiet:抑制终端的冗余输出,仅保留关键提示,详细日志只写入--log-dir指定的文件
三、保留中间步骤输出文件
要获取中间步骤的输出文件,需配合临时目录相关参数:
--keep-tmpdir:阻止cwl-runner自动删除运行过程中创建的临时目录,该目录包含所有中间步骤的输出文件--tmpdir-prefix <路径>:指定临时目录的前缀位置,方便后续定位中间文件(需与--keep-tmpdir配合使用)
组合使用示例
如果需要同时保存全量终端日志、分步日志,且保留中间输出,可组合命令如下:
cwl-runner --debug --log-dir ./workflow_logs --keep-tmpdir --tmpdir-prefix ./workflow_temp workflow.cwl inputs.yml > full_run.log 2>&1
执行后:
full_run.log保存终端所有输出内容./workflow_logs目录下是每个步骤的独立日志文件./workflow_temp开头的目录中存储所有中间步骤的输出文件
补充说明
你之前尝试的--tmpdir-prefix仅指定临时目录位置,默认会自动删除,需配合--keep-tmpdir才能保留中间文件;--output-dir仅用于保存最终输出结果,不包含中间步骤和日志内容,因此无法满足需求。
内容的提问来源于stack exchange,提问作者syllogismos
相关产品推荐
相关产品推荐

