python - flask 正确配置日志记录

标签 python logging flask

我创建了一个简单的 flask 应用程序,但无法正确配置日志记录。

def configure_logger(log_path, name='default'):
    logging.config.dictConfig({
        'version': 1,
        'formatters': {
            'default': {'format': '%(asctime)s - %(levelname)s - %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S'}
        },
        'handlers': {
            'console': {
                'level': 'INFO',
                'class': 'logging.StreamHandler',
                'formatter': 'default',
                'stream': 'ext://sys.stdout'
            },
            'file': {
                'level': 'INFO',
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'formatter': 'default',
                'when': 'midnight',
                'filename': log_path,
                'backupCount': 5
            }
        },
        'loggers': {
            'default': {
                'level': 'INFO',
                'handlers': ['console', 'file']
            }
        },
        'disable_existing_loggers': False
    })
    return logging.getLogger(name)


logger = configure_logger(log_path='./logs/')
app.logger.addHandler(logger)

但是(flask)记录器没有使用提供的配置,
以及登录子模块时
├── api.py
├── logs
├── my_pkg
│   ├── __init__.py
│   └── second.py
└── settings
    ├── __init__.py
    └── settings.py

我只记录了错误,并且我的日志配置再次未应用于子模块中的记录器:
import logging
logger = logging.getLogger('root')

https://github.com/geoHeil/flask_logging_question在示例项目中展示了这一点

最佳答案

启用 'disable_existing_loggers': False` 如 https://fangpenlin.com/posts/2012/08/26/good-logging-practice-in-python/ 所述将有助于解决问题。

关于python - flask 正确配置日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466408/

相关文章:

Python Pandas SQL 风格左连接两个类列表

python - 如何在没有样板代码的情况下将 pandas 系列的内容分配给 sqlAlchemy 类实例?

python - 基于 Flask-wtf 的登录表单的 csrf 失败错误

python - 当模型具有注意力层时,无法从 Model.get_config() 加载 keras 中的模型

python - 了解 Pylint E1101 : Instance has no replace member

tomcat - spring boot embedded Tomcat的crash log在哪里?

Python matplotlib 等高线图对数色标

ios - 如何手动删除 Cocoalumberjack 日志

python - 如果父行的子行将在 SQLAlchemy 中被孤立,则防止删除父行

linux - 在 Docker 容器中以主机用户身份运行