0
由於缺乏對模塊的理解,我正在努力解決一個問題。 我必須開始鏈接長分析腳本,這些腳本在stdout和stderror上都會生成大量的輸出。我需要使用日誌記錄模塊記錄子進程調用的輸出。只要輸出不太大,下面的代碼就可以工作,但一旦它只是以截斷的日誌文件結束。日誌記錄長子進程sdtout
import logging, subprocess
def popen_log(commandL, logFile):
p = subprocess.Popen(commandL, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = p.communicate()
#create logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler(logFile)
fh.setLevel(logging.DEBUG)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(levelname)s : %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.info(stdout)
logger.error(stderr)
logger.removeHandler(fh)
popen_log(['script1.py', '-i', inputFolder], 'test.log')
這當然有事情做與stdout和stderror日誌文件或與緩衝的流,但我只是無法弄清楚如何做到這一點。任何幫助將非常感激。
非常感謝。
謝謝,這可以,我最好希望將所有內容保存在一個文件中。我會試一試。 – user1242959 2012-03-02 08:57:52