从flask主模块导入的python模块中启用日志记录

时间:2018-07-11 10:25:42

标签: python logging flask python-import

我想在我的烧瓶应用程序中配置日志记录。我搜索了烧瓶文档和多个SO问题。没有任何帮助。

我使用以下dictConfig()调用来配置我的格式化程序,处理程序和记录器。我从Flask文档中获得了此信息,并对其进行了一些修改。

main.py:

dictConfig({
    'version': 1,
    'formatters': {
        'precise': {
            'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
            # 'style': '{',
        },
        'brief': {
            'format': '%(message)s',
            # 'style': '{',
        }
    },
    'handlers': {
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'precise',
            'filename': 'logs/autoFlow.log',
            'level': 'DEBUG',
            'maxBytes': 1024*1024,
            'backupCount': 5
        },
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'brief',
            'level': 'INFO',
            'stream': 'ext://sys.stdout'
        }
    },
    'root': {
        'level': 'DEBUG',
        'handlers': ['file', 'console']
    }
})
# assigning the logger
logger = app.logger

# example log call
logger.debug("Test")

这在我的日志文件中按预期显示。 我已经导入了一些自行编写的模块来处理不同的事情。

我每个人都做

logger = logging.getLogger(__name__)

并这样称呼他们:

logger.debug("Project: {0}".format(name))

但是此语句未显示在我的日志文件或控制台中。

我怀疑这里缺少配置详细信息。配置本身起作用,导致文件旋转并在指定位置创建。还尝试了其他调用以使记录器进入我的main.py。还没有开始工作。

我检出的资源:

Python logging multiple modules logger not working outside main program

How can I log outside of main Flask module?

http://flask.pocoo.org/docs/1.0/logging/#basic-configuration

http://y.tsutsumi.io/global-logging-with-flask.html

也许有人可以发现错误。 我们非常感谢您的帮助。


编辑: 显然,如果我使用

logging.info("Log Message")

代替:

logger.info("Log Message")

它登录到主模块中指定的日志文件中。所以我可以通过删除所有内容来解决问题

logger = logging.getLogger(__name__)

语句,并通过记录调用来替换它们,以使我的外部模块写入正确的日志。但这似乎不是最佳实践。

我也怀疑导入时出错。我试图将两个记录器(在内部和外部)都命名为相同的名称。完全没有日志记录。可能是因为我先导入整个模块,然后配置root记录器。

0 个答案:

没有答案