我想在我的烧瓶应用程序中配置日志记录。我搜索了烧瓶文档和多个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记录器。