- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 CherryPy 3.7.0
构建一个小型网络应用。
我的问题是我不知道如何将上下文信息添加到它的日志输出中。
尽管我已经多次阅读它的文档,但仍不清楚如何实现这样的事情。我有兴趣在记录器中添加一个 task
属性,这样在我的一个 View 中我应该能够写:
logger.info('Processing finished', extra={'task': 'jashgd-765273-ehdfiuh'})
我应该怎么做?
提前致谢
最佳答案
这是logging.debug
的文档说说 extra
关键字参数:
The third optional keyword argument is extra which can be used to pass a dictionary which is used to populate the __dict__ of the LogRecord created for the logging event with user-defined attributes. These custom attributes can then be used as you like. For example, they could be incorporated into logged messages. For example:
FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning('Protocol problem: %s', 'connection reset', extra=d)
即extra
不会神奇地自动记录——您需要提供适当的格式化程序。
这是 CherryPy 的例程,cherrypy._cplogging.LogManager.error
,它有效地将数据传递给 stdlib 的记录器:
def error(self, msg='', context='', severity=logging.INFO, traceback=False):
"""...
This is not just for errors! Applications may call this at any time
to log application-specific information.
...
"""
if traceback:
msg += _cperror.format_exc()
self.error_log.log(severity, ' '.join((self.time(), context, msg)))
另请查看 cherrypy._cplogging
的文档字符串.它解释了 CherryPy 日志记录的预期扩展。
从上面的部分我们得到了结果。简单的回答是你不能直接这样做。另外,@AndrewKloos 的回答实际上并不是答案,因为您不能按顺序将 dict
传递给 str.join
。此外,您甚至不能传递 extra
关键字参数,因为签名中没有这样的正式参数。即使可以,为格式化程序提供额外的占位符也会导致任何 CherryPy 的正常日志记录中的字符串插值错误(显然不提供任何额外的键)。
因此最好的折衷办法就是:
cherrypy.log('Processing finished ' + str({'task': 'jashgd-765273-ehdfiuh'}))
其他选项:
cherrypy.log.error_log.info
cherrypy.log
与您的 cherrypy._GlobalLogManager
子类Introspect Python logging with logging_tree是一篇不错的文章(和包),它解释了 CherryPy 应用程序示例中的日志记录层次结构和消息传递。
关于python - CherryPy 将上下文信息添加到日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30622094/
假设我有一些代码(使用 CherryPy),如下所示: import cherrypy class Names: def index(self, name=None): ret
{% if bCat2 == True %} True {% else %} False 返回 False即使 bCat2是 True . 谢谢, 安德鲁 最佳答案 选项 1:最常见的
我这里有一个Python程序。它使用 CherryPy 创建服务器。 # coding:utf-8 import os.path import cherrypy from app import app
我有一个现有的cherrypy应用程序,但我想知道是否可以在gevent wsgi服务器上运行它。我想我可以,但我无法访问 Linux 服务器来测试 gevent,并且无法让它在我的 Mac 上运行。
当我使用cherrypy.tree.mount时,我无法从系统连接到在docker容器中运行的CherryPy服务器,但是当我执行cherrypy.quickstart()时,我可以连接至服务器。对带
我开始学樱桃,但是遇到了路障。我无法获取静态文件来挽救生命。我正在搜索404。The path '/static' was not found.,但是尚未找到解决方案。我要做的就是在http://lo
运行 CherryPy 应用程序时,它会发送服务器名称标签,例如 CherryPy/version。 是否可以在不修改 CherryPy 的情况下从应用程序重命名/覆盖它,以便它显示其他内容? 也许像
CherryPy 服务器将其错误日志写入何处?我已经安装了 CherryPy 并使用 python3.2 启动了服务器 from cherrypy import wsgiserver
我正在开发一个 django 应用程序,我使用cherrypy作为服务器。 Cherrypy 为每个页面 View 创建一个新线程。我希望能够从它们中的任何一个中访问所有这些线程(负责与 django
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: Using mappings in CherryPy 我如何将 url regEx(例如/data/[A-Z].tx
我知道这个问题比“如何加快我的网站的速度”要高出一个步骤,但是我到处都是由Cherrypy驱动的网站,却找不到任何电子商务网站。在开始重写当前站点之前,我们开始使用Cherrypy和jinja2作为概
我有一个cherrypy api,旨在在服务器上运行很长时间。 我有一个不可靠的客户端,它可能会因我无法控制的各种原因而终止或关闭连接。 在我的服务器 api 运行期间,我想定期检查连接状态,确保客户
这是我第一次使用 CherryPy,所以请原谅任何愚蠢的行为。 我正在尝试编写一个 RESTful API,该 API 部分处理添加/删除人员。我希望能够 GET/PUT/DELETE example
我想在不同的端口和不同的应用程序上运行 2 个cherry py 服务器。 我设法运行它们,但是如何在应用程序和服务器之间连接?我希望能够去 http://127.0.0.1:3141/ 并获取ser
有没有办法让 CherryPy 响应包含句点的 url,例如 http://some/base/path/oldscript.py ?我有许多像这样调用的旧 CGI 脚本,我正在尝试将它们整合到一个漂
使用 Cherrypy 如何制作此脚本以便任何 url 都将加载 load index.html 示例,如果使用其中任何一个,那么它们都会加载index.html页面www.mtsite.test/1
我尝试从具有 Transfer-Encoding: chunked header (没有 Content-Length)的 POST 正文中获取数据。内容类型是application/octet-st
我正在构建一个使用 CherryPy 提供 REST API 的应用程序,以及另一个执行后台工作的线程(实际上,它从串行端口读取数据)。 import cherrypy import threadin
我向 CherryPy 服务器添加了摘要身份验证,我想知道撤销用户身份验证的标准是什么,并提示他们再次输入凭据。删除 cookie 不会强制出现提示,但使用隐身或其他浏览器会强制出现提示。 我的配置:
我在启动 CherryPy 时遇到一些问题,我不明白为什么我总是收到此错误。这是版本和带有日志输出的相关代码。Python 2.7.6CherryPy 3.5.0(通过 PIP) CURRENT_DI
我是一名优秀的程序员,十分优秀!