簡體   English   中英

logging.info('…',stack_info = True)對於Python2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM