代码之家  ›  专栏  ›  技术社区  ›  nanounanue

在烧瓶内记录microservice

  •  2
  • nanounanue  · 技术社区  · 7 年前

    我创建了一个 Flask 应用程序。全部的 瓶子 代码在里面 api.py 。此应用程序使用其他文件,例如 utils.py 。此文件包含将从 api。py公司

    在…内 api。py公司 我正在使用 app.logger 用于日志记录,如

    app.logger.debug('HI')
    

    此日志显示在控制台中。

    但在 UTIL。py公司 我正在使用:

    import logging
    logger = logging.getLogger('utils')
    
    ...
    
    logger.debug('SOME MESSAGE')
    

    但控制台中没有显示任何内容。

    一个可怕的, 很坏的 ,则, 很坏的 我现在使用的黑客正在导入 app 从…起 api。py公司

    from . import api
    
    api.app.logger.debug('SOME MESSAGE')
    

    此消息显示在控制台中。但我知道我在这里做错了。有更好的方法吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Paul Becotte    7 年前

    Flask使用全局应用程序对象存储这些内容。你最想做的是

    from flask import current_app
    
    current_app.logger.debug('hi')
    

    或者,您可以将默认记录器配置为以与flask配置相同的方式登录到文件 它的 logger使用标准python日志记录方法执行此操作。

    # app_logger.py
    import logging
    import logging.config
    
    
    logging.config.fileConfig('logging_config.ini')
    logger = logging.getLogger()
    

    然后在其他文件中。。。

    #utils.py
    from app_logger import logger
    logger.debug('hi')
    

    第二种方法是我如何为我的flask应用程序设置日志记录,创建一个全局“logger”对象,并将该对象导入到我想记录的任何地方(这样我就可以轻松地找出在哪里更改配置以执行诸如将日志记录到标准输出或文件之类的操作)