gpt4 book ai didi

python - 如何在 Django 日志文件中记录 Python 警告?

转载 作者:太空狗 更新时间:2023-10-30 01:12:43 25 4
gpt4 key购买 nike

我有一个要从 v1.8 迁移到 v1.10 的 Django 应用程序。在完成这项工作的过程中,我通过以下方式运行我的应用程序:

python -Wall manage.py runserver

这样做会导致我的控制台中出现许多 Python 警告。我想让这些警告显示在我的 Django 应用程序日志中,以便稍后检查它们。我以为我的应用程序的日志处理程序会捕获这些警告,但它没有。日志处理程序如下所示(取自 settings.py):

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'file': {
'level': 'WARNING',
'class': 'logging.FileHandler',
'filename': 'myapp.log',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'propagate': True,
'level': 'WARNING',
},
'myapp': {
'handlers': ['file'],
'level': 'WARNING',
},
}
}

如何在我的 Django 日志中捕获 Python 警告(使用 -Wall)以便稍后检查?

最佳答案

python -Wall manage.py <command> 中显示的警告使用警告模块生成。在 Python2.7 日志记录模块文档中,有一节显示如何 integrate messages from warnings module记录。

将这些添加到您的设置文件中。

import logging
logging.captureWarnings(True)

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'file': {
'level': 'WARNING',
'class': 'logging.FileHandler',
'filename': 'myapp.log',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'propagate': True,
'level': 'WARNING',
},
'myapp': {
'handlers': ['file'],
'level': 'WARNING',
},
'py.warnings': {
'handlers': ['file'],
'level': 'WARNING',
'propagate': True
}
}
}

添加后,尝试运行任何manage.py命令,您可以看到写入 myapp.log 的警告文件。

此行指示日志记录捕获 py.warnings 警告:

    logging.captureWarnings(True)

这指示日志记录从 py.warnings 记录器路由(在本例中到 文件 处理程序)警告:

    'py.warnings': {
'handlers': ['file'],
'level': 'WARNING',
'propagate': True
}

关于python - 如何在 Django 日志文件中记录 Python 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40752766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com