gpt4 book ai didi

python - 将 django.request 记录到文件而不是控制台

转载 作者:太空狗 更新时间:2023-10-29 22:22:14 24 4
gpt4 key购买 nike

我正在尝试配置我的 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 输出经过日志记录: https://docs.djangoproject.com/en/dev/releases/1.10/#runserver-output-goes-through-logging

关于python - 将 django.request 记录到文件而不是控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563706/

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