Просто хотел забрать ваши мозги. У меня есть несколько подпроцессов, и я хотел напечатать stderr и stdout в файле. Я сделал это до сих пор:python log stderr и stdout к файлу
def write_to_stderr_log(process):
stderr= open("stderr.log", "w")
proc_err = process.communicate()
print >> stderr, proc_err
stderr.close()
def write_to_stdout_log(process):
stdout = open("stdout.log", "w")
proc_out = process.communicate()
print >> stdout, proc_out
stdout.close()
def logger():
logger = logging.getLogger('error_testing')
hdlr = logging.FileHandler('error.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.WARNING)
logger.error('We have a problem')
logger.debug('debugging')
logger.info('some info')
logger()
proc = subprocess.Popen(['FastTree -nt test.fasta'], bufsize=512, stdin = None, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
write_to_stderr_log(proc)
write_to_stdout_log(proc)
Это лучший способ сделать это. Если у меня есть несколько процессов, я думаю, что он собирается перезаписать файлы журнала, так что это может быть проблемой. Оцените здесь несколько советов. Спасибо
@nrpeterson это один из перенаправлений вывода дочернего процесса –
А, у вас есть точка. Мои извинения! –