Snakemake: RuntimeError stack trace hiányzik ha Python fileConfig ()

szavazat
0

Van egy snakefile egy szabályt, amely import egy helyi Python szkript, és felvet RuntimeError. Amikor fut a snakefile, a stack trace az RuntimeErrornem jelenik meg. A kód és snakemake kiadási alábbiakban mutatjuk be.

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

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

Azonban, ha megjegyzésbe a vonal fileConfig(log_file_path)a test.pyés fuss snakemake a RuntimeError veremkivonatban van nyomtatva, mint várható:

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

Bárki, aki tudja, miért történik?

A kérdést 13/01/2020 22:02
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Ez a kérdés, hogy köze van, hogy logginga modul került meghatározásra test.py, és hogyan importálták Snakefile. Következő beállítási kell dolgozni. Felhívjuk figyelmét, megjegyzések belső kód blokk leírása módosításokat.

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 - ugyanaz, mint írt kérdéseket.

Ebben a beállításban, a változó helloés az osztály loggerkap behozott szabály test_rule, és a fakitermelés kiadási íródik fájlba /tmp/experiments.log, mint kialakítva logging_config.ini.

Válaszolt 23/01/2020 05:26
a forrás felhasználó

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