shell 记录Snakemake自己的控制台输出-如何更改Snakemake日志的文件?

gajydyqb  于 2023-05-18  发布在  Shell
关注(0)|答案(2)|浏览(192)

我试图将Snakemake自己的控制台输出(* 不是 * 单个作业生成的日志)保存到任意文件中,同时仍将其写入stdout/stderr。(不幸的是,我的设置意味着我不能只使用tee
在我看来,Snakemake应该提供该功能,因为它将日志输出保存到默认位置。然而,在查看文档时,我找不到一个参数来轻松更改日志的输出位置。从the code of snakemake.logging中,我得到的印象是日志文件的父目录可能是硬编码的,文件只是得到了一个时间戳的名称。
有没有一些显而易见的方法来配置我忽略的Snakemake日志的文件?

kognpnkq

kognpnkq1#

文件名/路径在setup_logfile中硬编码。
这是一个技巧,但有一个选择是使用onsuccess / onerror将日志文件复制到所需的位置(注意,没有oncompletion,所以日志复制可能适用于这两种情况):

onsuccess:
    shell("cp -v {log} some_path_for_log_copy.log")

onerror:
    shell("cp -v {log} some_path_for_log_copy.log")
ndh0cuux

ndh0cuux2#

作为一种变通方法,似乎可以将位于其他地方的目录符号链接到正在运行Snakemake的目录(前提是它仍然被称为.snakemake/),并且应该可以工作。通过这种方式,您可以将日志文件存储在其他地方,但Snakemake也将能够在正确的位置查找所有日志等。

相关问题