【问题标题】:try, except and logger Python尝试,除了和记录 Python
【发布时间】:2019-08-13 16:30:24
【问题描述】:

我的代码中有这个方法,但我想将错误传递到我的日志并删除 print(e)。

def get_used(self, obj):
    try:
        return '<a href="%(url)s">%(name)s</a>' % {'url': reverse('org', kwargs={'organization': obj.organization.slug}), 'name': obj.organization.name}
    except Exception as e:
        print(e)
        return ''

我找到了关于记录调用https://docs.djangoproject.com/en/2.1/topics/logging/ 的文档,但我真的不确定实现是不是这样。

def get_used(self, obj):
    try:
        return '<a href="%(url)s">%(name)s</a>' % {'url': reverse('org', kwargs={'organization': obj.organization.slug}), 'name': obj.organization.name}
    except Exception as e:
        logger = logging.getLogger(__name__)
        logger.exception(e)
        return ''

或者我脑海中的另一个想法是创建 logger = logging.getLogger(__name__) 作为全局变量。

我对如何构建记录器有些困惑,我需要帮助来编写代码。

谢谢!!

【问题讨论】:

    标签: python-3.x exception logging


    【解决方案1】:

    您的代码中的这一行为您提供了记录器的句柄:

    logger = logging.getLogger(__name__)
    

    现在您可以使用不同的功能根据严重性记录消息,例如:

    logger.debug("Very detailed information")
    logger.info("Rather important information")
    logger.warning("A warning")
    

    这是否被打印取决于您的日志级别和您拥有的处理程序。看看official tutorial

    在你的情况下,这应该可以工作:

        except Exception as e:
            logger = logging.getLogger(__name__)
            logger.warning(e)
            return ''
    

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2014-03-29
      • 2019-01-29
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多