使用記錄器打印出stdout和stderr來記錄文件。我已經做到了這一點:在使用記錄器時在stderr文件中打印stdout
def log(process):
logger = logging.getLogger('logging_errors')
if not len(logger.handlers):
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(levelname)s %(asctime)s %(module)s %(message)s')
handler_stderr = logging.FileHandler('stderr.log')
handler_stderr.setLevel(logging.WARNING)
handler_stderr.setFormatter(formatter)
logger.addHandler(handler_stderr)
handler_stdout = logging.FileHandler('stdout.log')
handler_stdout.setLevel(logging.DEBUG)
handler_stdout.setFormatter(formatter)
logger.addHandler(handler_stdout)
return logger.error(process.stderr.read())
return logger.info(process.stdout.read())
的處理被傳遞到這個功能,可以是這樣的:
proc = subprocess.Popen(['FastTree -nt test.fasta'], stdin = None, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
proc.wait()
log(proc)
我的問題是,標準輸出沒有得到打印到標準輸出。日誌文件,我在stdout.log文件中得到stderr。 stderr.log文件是正確的。任何關於這個的指針?
我這樣做,我確實得到了正確的標準輸出,但它只運行一個進程。我添加了一個額外的過程,但它忽略了它。 – bioinf80