当前位置: 首页 > 面试题库 >

flask.logger与更通用的python日志记录模块相比有什么优势?

司寇光华
2023-03-14
问题内容

我正在使用Flask构建一个网站,现在正在为其添加一些日志记录的过程中找到了这些文档。基本示例如下:

if not app.debug:
    import logging
    from themodule import TheHandlerYouWant
    file_handler = TheHandlerYouWant(...)
    file_handler.setLevel(logging.WARNING)
    app.logger.addHandler(file_handler)

之后您可以使用登录app.logger.error('An error occurred')。这很好用,但是除了我没有看到比常规python日志记录模块没有任何优势的事实之外,我还看到了一个主要的缺点:如果我想在请求上下文之外进行日志记录(例如,使用cron作业运行某些代码)
)我收到错误消息,因为我在请求上下文之外使用应用程序。

所以我的主要问题是 为什么我要完全使用Flask记录器?它曾经建造的原因是什么?


问题答案:

Flask记录器使用“通用” Python记录,这logging.getLogger(name)与其他任何记录一样。

存在记录器,以便Flask应用和视图可以记录执行期间发生的事情。例如,它将在调试模式下记录500个错误的回溯。此处的配置示例显示了如何在未处于调试模式时启用这些日志,这些日志在生产中仍然有用。

拥有内部记录器并不是Flask独有的,这是在Python中使用日志记录的标准方法。每个模块都定义了自己的记录器,但是记录的 配置
仅由链中的最后一个链接处理:您的项目。

您也可以将其app.logger用于自己的消息,尽管不是必需的。您也可以为自己的消息创建一个单独的记录器。最后,全部是Python日志记录。



 类似资料:
  • 问题内容: 我想知道如何实现一个全局记录器,该记录器可以用自己的设置在任何地方使用: 我目前有一个自定义记录器类: 该类在一个单独的文件中,其中包含一些格式化程序和其他内容。记录器可以完美地独立运行。 我将此模块导入我的主python文件中,并创建一个像这样的对象: 但显然,我无法从代码的其他部分访问此对象。我使用错误的方法吗?有一个更好的方法吗? 问题答案: 使用创建一个名为全球记录。 main

  • 我正在使用Python日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示: 当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。 我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

  • 问题内容: 我想检查特定背景文件中的错误,但是标准错误流由前台程序控制,并且问题中文件中的错误未显示。不过,我可以使用该模块并将输出写入文件。我想知道如何使用它来记录所有异常,错误及其回溯。 问题答案: 记录程序中引发的 任何 异常可能是一个坏主意,因为Python还将异常用于正常控制流。 因此,您应该只记录 未捕获的 异常。一旦有了异常对象,就可以使用记录器的方法轻松地执行此操作。 要处理所有未

  • 问题内容: 我正在使用python记录器。以下是我的代码: 我的问题是我在每个呼叫的日志文件中都有多个条目。我该如何解决? 问题答案: 该已经是一个单例。(文件) 问题在于,每次调用时,都会向实例添加另一个处理程序,这将导致日志重复。 也许像这样?

  • 问题内容: 与常规Python列表相比,NumPy有什么优势? 我有大约100个金融市场系列,我将创建一个100x100x100 = 1百万个单元的多维数据集数组。我将每个x与y和z回归(3变量),以用标准误差填充数组。 我听说对于“大型矩阵”,出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表。事实是,我知道Python列表,它们似乎对我有用。 如果我转到NumPy,会有什么好

  • 问题内容: 用…实现事情 似乎 已经 很简单 了… 与 ngResource相比 ,使用Restangular 有哪些优点/缺点? 1.1.3 将返回承诺,并且可以使用[最新的PRcommit来实现。将来会提供支持来支持Restangular所做的其他动词吗?如果发生这种情况,Restangular似乎将消失并变得不耐烦。 问题答案: 我是Restangular的创建者。 我已经在自述文件中创建了