Snakemake: Runtime Stack-Trace fehlt, wenn Python fileConfig mit ()

stimmen
0

Ich habe eine snakefile mit einer Regel , die einen lokalen Python - Skript importiert und dann wirft ein RuntimeError. Als ich die snakefile laufen, die Stack - Trace für die RuntimeErrornicht dargestellt ist . Der Code und die snakemake Ausgang sind unten gezeigt.

// 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 Ausgabe:

...
[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

Allerdings, wenn ich die Zeile auf Kommentar fileConfig(log_file_path)in test.pyund laufen snakemake, die Runtime Stack - Trace wird erwartet gedruckt:

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

Wer weiß, warum dies geschieht?

Veröffentlicht am 13/01/2020 um 22:02
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Dieses Problem hat damit zu tun , wie loggingModul wurde definiert in test.pyund wie wurden sie eingeführt in Snakefile. Nach Setup sollte funktionieren. Bitte beachten Sie Kommentare in Codeblock für die Beschreibung der Änderungen.

test.py

import logging
import os
from logging.config import fileConfig

fileConfig('logging_config.ini')
logger = logging.getLogger(__name__)   # assigns to "logger", through which logs are passed. 
logger.info('test.py debug msg')   # example log message

hello = 'yo yo yo'

Snakefile

rule test_rule:
    run:
        from test import hello, logger.   # imports both hello and logger
        print(hello)
        print (logger)

        logger.exception("Exception occurred")   # error log that would capture stack traces, if any. No stack trace in this example.
        raise SystemExit(1)     # exits with non-zero error

logging_config.ini - wie in Fragen gepostet.

In dieser Konfiguration, variable hellound Klasse loggererhalten in der Regel eingeführt test_rule, und ihre Log - Ausgabe wird in die Datei geschrieben /tmp/experiments.log, wie in konfiguriert logging_config.ini.

Beantwortet am 23/01/2020 um 05:26
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more