У меня есть файл змеи с одним правилом, который импортирует локальный скрипт Python, а затем вызывает RuntimeError
. Когда я запускаю snakefile, трассировка стека для RuntimeError
не отображается. Код и выходные данные snakemake показаны ниже.
// test.snakefile
rule test_rule:
run:
from test import hello
print(hello)
raise RuntimeError('raising error')
// test.py
import logging
import os
from logging.config import fileConfig
log_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logging_config.ini')
fileConfig(log_file_path)
hello = 'hello'
выходные данные snakemake:
...
[Mon Jan 13 14:45:54 2020]
rule test_rule:
jobid: 0
Job counts:
count jobs
1 test_rule
1
hello
Shutting down, this might take some time.
Exiting because a job execution failed. Look above for error message
Однако, если я закомментирую строку fileConfig(log_file_path)
в test.py
и выполню snakemake, трассировка стека RuntimeError печатается, как ожидается:
Error in rule test_rule:
jobid: 0
RuleException:
RuntimeError in line 5 of /my-dir/test.snakefile:
raising error
File "/my-dir/test.snakefile", line 5, in __rule_test_rule
File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
Exiting because a job execution failed. Look above for error message
Кто-нибудь знает, почему это происходит?
РЕДАКТИРОВАТЬ: logging_config.ini
[loggers]
keys=root
[handlers]
keys=stream_handler
[formatters]
keys=formatter
[logger_root]
level=INFO
handlers=stream_handler
[handler_stream_handler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=formatter
args=('/tmp/experiments.log', 'midnight')
[formatter_formatter]
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s