kst*_*tis 6 python django logging
我正在尝试配置我的django settings.py以正确使用python日志工具,但我偶然发现了一个相当奇怪的问题:
即使在阅读了文档之后,我也无法找到如何将控制台打印的调试请求行从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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我一直看到以下格式的控制台打印行:
[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()
Run Code Online (Sandbox Code Playgroud)
在write方法中,您也可以使用日志记录系统通过LOGGING设置来处理此问题.
更新:
在Django 1.10中,runserver输出通过日志记录:https: //docs.djangoproject.com/en/dev/releases/1.10/#runserver-output-goes-through-logging
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |