Python Pyramid 日志
为了收集关于应用程序的有用信息,Pyramid使用了Python标准库中的 logging 模块。它在开发模式和生产模式中都非常有用,可以在应用程序运行过程中检测到任何问题。应用程序日志可以包含您自己的消息以及来自第三方模块的消息。
记录的消息有以下预定义类型(按严重性递减的顺序)−
- CRITICAL
- ERROR
- WARNING
- INFO
- DEBUG
- NOTSET
默认情况下,日志消息会重定向到sys.stderr流。要开始收集日志消息,我们需要声明一个Logger对象。
import logging
log = logging.getLogger(__name__)
现在可以通过与所需的日志级别相对应的记录器方法生成日志消息。要生成对调试应用程序有用的消息,请使用适当的消息字符串和 log.debug() 。
基于PasteDeploy配置的Pyramid应用程序非常容易启用和整合日志支持。PasteDeploy文件(development.ini和production.ini)使用日志模块配置参数中使用的 ConfigParser 格式。当pserve命令调用它时,development.ini中与日志相关的部分被传递给日志模块的配置过程。
配置文件中的各种记录器部分指定了应用程序对象的键、格式和记录器级别。
典型的”development.ini”文件中声明了以下与日志相关的部分:
# Begin logging configuration
[loggers]
keys = root, hello
[logger_hello]
level = DEBUG
handlers =
qualname = hello
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
#level = INFO
level=DEBUG
handlers = console
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
# End logging configuration
在我们上一章节的Hello应用程序的 development.ini 文件中,让我们添加这些部分。
示例
接下来,声明Logger对象并在 hello_world() 的几个函数中添加调试消息。下面是 __init__.py 的代码 −
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.view import view_config
import logging
log = logging.getLogger(__name__)
from pyramid.renderers import render_to_response
def hello_world(request):
log.debug('In hello view')
return render_to_response('templates/hello.html',
{'name':request.matchdict['name']},request=request)
def main(global_config, **settings):
config = Configurator(settings=settings)
config.include('pyramid_jinja2')
config.add_jinja2_renderer(".html")
config.add_route('hello', '/{name}')
config.add_view(hello_world, route_name='hello')
return config.make_wsgi_app()
hello_world()视图将渲染以下hello.html模板−
<html>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
正常运行应用程序−
pserve development.ini
当在浏览器中输入以下URL时:
http://localhost:6543/Tutorialpoint ,命令窗口将显示以下调试信息:
Starting monitor for PID 11176.
Starting server in PID 8472.
2022-06-26 01:22:47,032 INFO [waitress][MainThread] Serving on http://[::1]:6543
2022-06-26 01:22:47,032 INFO [waitress][MainThread] Serving on http://127.0.0.1:6543
2022-06-26 01:22:47,418 DEBUG [hello][waitress-1] In hello view
输出
由于在配置中启用了调试工具栏,它将显示在浏览器中 –
调试消息也显示在调试工具栏的日志选项卡上,如下所示-