[英]logging.info('…', stack_info=True) for Python2
Python3具有用於logging.info()
的參數stack_info
:
https://docs.python.org/dev/library/logging.html#logging.Logger.debug
如何在Python2中獲得它?
以下模塊將日志記錄模塊包裝為支持stack_info關鍵字參數。 您可以導入此模塊並調用與記錄模塊類似的getLogger方法。
import logging
import logging.handlers
from functools import partial
logger = logging.getLogger()
old_critical = logger.critical
old_error = logger.error
old_warning = logger.warning
old_info = logger.info
old_debug = logger.debug
import traceback
def custom_log(old_log, message, *args, **kwargs):
if kwargs.get("stack_info"):
message = message + reduce(lambda x,y: x+y, traceback.format_stack(), "")
if kwargs.get("stack_info") is not None:
del kwargs["stack_info"]
old_log(message, *args, **kwargs)
logger.critical = partial(custom_log, old_critical)
logger.error = partial(custom_log, old_error)
logger.warning = partial(custom_log, old_warning)
logger.info = partial(custom_log, old_info)
logger.debug = partial(custom_log, old_debug)
def new_getLogger(logger_name="root"):
return logger
from logging import *
getLogger = new_getLogger
PS-這種方法的缺點是它將進行一個額外的函數調用,並且在堆棧跟蹤中也將可見
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.