将django.request记录到文件而不是控制台
发布时间:2020-05-23 09:59:05 所属栏目:Python 来源:互联网
导读:我正在尝试配置我的 django settings.py以正确使用 python日志记录工具,但我偶然发现了一个相当奇怪的问题: 即使在阅读了docs之后,我也无法找到如何将控制台打印的调试请求行从Django重定向到我指定的文件;以下是我的日志记录配置的一部分. LOGGING = { vers
|
我正在尝试配置我的 django settings.py以正确使用 python日志记录工具,但我偶然发现了一个相当奇怪的问题: 即使在阅读了docs之后,我也无法找到如何将控制台打印的调试请求行从Django重定向到我指定的文件;以下是我的日志记录配置的一部分. LOGGING = {
'version': 1,'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
},}
'handlers': {
'file_http': {
'level': 'DEBUG','class': 'logging.FileHandler','filename': r'C:mysystem-http.log','formatter': 'verbose'
}
},'loggers': {
'django.request': {
'handlers': ['file_http'],'level': 'DEBUG','propagate': False
}
}
}
我一直看到以下格式的控制台打印行: [19 / Dec / 2014 11:48:03]“POST / api / v1 / HTTP / 1.1”200 10 如何使用日志工具将这些重定向到文件? 提前致谢 解决方法manage.py runserver没有使用日志系统来处理像[19 / Dec / 2014 11:48:03]这样的消息“POST / api / v1 / HTTP / 1.1”200 10.而不是这样,runserver使用sys.stderr(和sys) .stdout为其他人留言).如果您确实需要将其重定向到文件,则可以覆盖sys.stderr settings.py.示例 – 将sys.stderr记录到文件和控制台:import sys
class Logger(object):
def __init__(self):
self.console = sys.stderr
self.file = open("runserver.log","a",0)
def write(self,msg):
self.console.write(msg)
self.file.write(msg)
sys.stderr = Logger()
在write方法中,您也可以使用日志记录系统通过LOGGING设置来处理此问题. 更新: 在Django 1.10中,runserver输出通过日志记录: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
