Snakemake: Python fileConfig kullanıldığında eksik RuntimeError yığın izi ()

oy
0

Yerel bir Python komut dosyasını ithal eder ve sonra bir yükseltir tek kural ile bir snakefile var RuntimeError. I snakefile çalıştırın için yığın izleme RuntimeErrorgösterilmemiştir. Kod ve snakemake çıkış aşağıda gösterilmiştir.

// 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 çıkışı:

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

Çizgiyi açıklama, ancak fileConfig(log_file_path)içinde test.pyve çalışma snakemake beklendiği gibi, RuntimeError yığın izlemesi basılır:

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

Bu durumda neden bilen var mı?

Oluştur 13/01/2020 saat 22:02
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Bu sorun nasıl bir ilgisi vardır loggingmodül tanımlandı test.pyve nasıl ithal edildiğini Snakefile. Aşağıdaki kurulum çalışması gerekir. Not değişikliklerin açıklaması için iç kod bloğunu yorumlar edin.

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 - sorularda aynı yayınlanmıştır olarak.

Bu ayarda, değişken hellove sınıf loggerüstünlüğü ithal olsun test_ruleve onların günlük çıkış dosyasına yazılır alır /tmp/experiments.logyapılandırıldığı gibi, logging_config.ini.

Cevap 23/01/2020 saat 05:26
kaynak kullanıcı

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