【发布时间】:2013-06-17 00:41:05
【问题描述】:
我正在使用 logger 打印出 stdout 和 stderr 来记录文件。我已经这样做了:
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 没有打印到 stdout.log 文件中,我在 stdout.log 文件中得到了 stderr。 stderr.log 文件是正确的。有没有这方面的指点?
【问题讨论】:
标签: python logging stdout stderr