0

だから私はこれを持っています。

from multiprocessing import Process

def run():
    4/0
    sys.exit()

def go(self):
    p = Process(target=run, args=())
    p.start()
    p.join()

プロセスからエラーを取得し、ファイルに保存するにはどうすればよいですか?

4

2 に答える 2

1

log module:import loggingを使用して、各プロセスにエラー/ログを直接ログ ファイルに記録させることができます。

logger = logging.getLogger('spam_application')
logger.warning("Something bad happened")

コードで次の操作を行います。注 - これは、他のロガーも使用できるローテーション ロガーです。[http://docs.python.org/2/library/logging.html]

from multiprocessing import Process
import logging
from logging.handlers import RotatingFileHandler 

r_logger = logging.getLogger('parsexmlfiles')

def set_logger()
    FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
    parser_logger = logging.getLogger('A_A_logfile')

    if isdaemon is True:
        # Log into a Log File.
        rotatingFH = RotatingFileHandler("/tmp/A_Alogfile.log", mode='a', 
                                     maxBytes=7340032, backupCount=4,
                                     encoding=None, delay=False)
        rotatingFH.setFormatter(logging.Formatter(
                                fmt="%(asctime)s : %(levelname)s : %(message)s", 
                                datefmt=None))
        parser_logger.addHandler(rotatingFH)
        parser_logger.setLevel(logging.DEBUG)

def run():
    4/0
    r_logger.info("Info Message")
    sys.exit()

def go(self):
    set_logger()
    p = Process(target=run, args=())
    p.start()
    p.join()
于 2012-11-15T23:30:37.403 に答える
0

関数を try/except でラップし、例外をブランケット キャッチします。Python ロギング モジュールを使用してスタック トレースをログに記録し、おそらく locals() を使用してコンテキストを記録します。

ロギング モジュールをスキップして、'print' を使用して例外処理メッセージをコンソールに出力することもできます。

于 2012-11-15T23:50:30.263 に答える