【问题标题】:No handlers could be found for logger "xhtml2pdf"找不到记录器“xhtml2pdf”的处理程序
【发布时间】:2016-01-05 00:11:33
【问题描述】:

我正在使用 xhtmltopdf.pisa 从 html 模板生成 pdf。代码运行良好。

pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources, default_css=open(pdf_css_path, 'r').read())

但有时我注意到,上面的代码不起作用。抛出的错误是No handlers could be found for logger "xhtml2pdf"。只有有时我能找到这个错误,但其他时候工作正常。

感谢任何帮助。

【问题讨论】:

    标签: python django pdf logging pisa


    【解决方案1】:

    错误的原因是,pisa 模块有时使用 Python 的日志记录模块来记录警告或错误。默认情况下,它会尝试访问名为xhtml2pdf 的记录器。所以你需要在你的设置文件中为xhtml2pdf 定义一个处理程序。

    Django 的日志记录设置如下所示,

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
        'standard': {
            'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt': "%d/%b/%Y %H:%M:%S"
            },
        },
        'handlers': {
            'logfile': {
                'level': 'DEBUG',
                'filename': BASE_DIR + "/Log/info.log"
            },
            'console': {
                'level': 'INFO',
                'class': 'logging.StreamHandler',
                'formatter': 'standard'
            },
        },
        'loggers': {
            'django': {
                'handlers': ['console'],
                'propagate': True,
                'level': 'WARN',
            },
            'xhtml2pdf': {
                'handlers': ['logfile'],
                'level': 'DEBUG'
           },
       }
    }
    

    这个错误不一致的原因是因为pisa可能不会一直使用logger。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 2012-11-11
      • 2011-09-03
      • 2015-04-27
      • 2015-02-09
      • 2016-07-24
      • 2018-11-12
      相关资源
      最近更新 更多