静默运行 WeasyPrint 脚本

Chr*_*ris 6 python console weasyprint

WeasyPrint 不支持某些 CSS3 功能(我希望如此),并且运行 Python 脚本会抛出一长串被忽略的条目(例如框阴影、渐变),然后是作业摘要。是否可以在静默模式下运行 WeasyPrint,而不显示任何信息?

Ste*_*ett 6

使用 Wea​​syPrint,我注意到 webserver.error.log 文件中的大部分日志消息实际上来自“fontTools”,它由“weasyprint”导入和使用,例如:

head pruned
OS/2 Unicode ranges pruned: [0]
glyf pruned
GDEF pruned
GPOS pruned
GSUB pruned
Run Code Online (Sandbox Code Playgroud)

在我“导入 weasyprint”(导入“fontTools”)之后,“fontTools”记录器级别设置为 INFO:

print(logging.getLogger('fontTools'))

<Logger fontTools (INFO)>
Run Code Online (Sandbox Code Playgroud)

所以如果我使用:

import weasyprint, logging
logging.getLogger('fontTools').setLevel(logging.WARNING)
logging.getLogger('weasyprint').setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

这会阻止 INFO 消息出现在我的 webserver.error.log 文件中。

或者可以使用:“.....setLevel(logging.ERROR)”来删除警告消息。


Hai*_* Vu 4

根据文档,您可以创建一个新的记录器对象来覆盖 WeasyPrint 默认行为。以下代码片段取自文档页面本身。

import logging
logger = logging.getLogger('weasyprint')
logger.handlers = []  # Remove the default stderr handler
logger.addHandler(logging.FileHandler('/path/to/weasyprint.log'))
Run Code Online (Sandbox Code Playgroud)

如果您根本不需要任何日志记录,可以删除最后一行。