web-dev-qa-db-ja.com

pythonロギングフレームワークを使用して、トレースバックを使用して警告レベルまたは情報レベルで例外をログに記録するにはどうすればよいですか?

このようなものを使用する:

try:
   # Something...
except Exception as excep:
   logger = logging.getLogger("component")
   logger.warning("something raised an exception: " + excep)
   logger.info("something raised an exception: " + excep)

私の特別なケースではエラーレベルの原因ではなく、エラーではありません。

ロギングドキュメント から:

kwargsには、_exc_info_、_stack_info_、およびextraの3つのキーワード引数があります。

_exc_info_がfalseと評価されない場合、例外情報がログメッセージに追加されます。例外タプル( sys.exc_info() によって返される形式)または例外インスタンスが提供されている場合は、それが使用されます。それ以外の場合は、 sys.exc_info() が呼び出されて、例外情報を取得します。

そうする:

_logger.warning("something raised an exception:", exc_info=True)
_
71
Douglas Leeder

これが機能するものです(python2.6.5)。

logger.critical("caught exception, traceback =", exc_info=True)
3
Scubahubby

あなたはこれを試すことができます:

from logging import getLogger

logger = getLogger('warning')

try:
    # Somethings that is wrong.

except Exception as exp:
    logger.warning("something raised an exception: " , exc_info=True)
    logger.warning("something raised an exception: {}".format(exp))  # another way
1
Benyamin Jafari