我使用HTTPHandler向Django Web服务器发送日志消息,代码如下:
import logging
import logging.handlers
logger = logging.getLogger(__name__)
_TARGET = '192.168.8.100:8000'
_PATH = '/VideoParser/lYYDownloaderClientLog/'
sh = logging.handlers.HTTPHandler(_TARGET, _PATH)
logger.addHandler(sh)
logger.error('testing remote logging')
但是服务器端显示的是http400和无效的http_主机头消息,如下所示
Invalid HTTP_HOST header: '192.168.8.100:8000,192.168.8.100'. The domain name pr ovided is not valid according to RFC 1034/1035. [05/Apr/2017 10:43:14] "GET /VideoParser/lYYDownloaderClientLog/?relativeCreated =117.00654029846191&thread=5468&levelname=ERROR&exc_info=None&exc_text=None&proc ess=8920&filename=a.py&msecs=39.52503204345703&stack_info=None&levelno=40&proces sName=MainProcess&msg=testing+remote+logging&module=a&threadName=MainThread&line no=26&created=1491360192.039525&funcName=%3Cmodule%3E&args=%28%29&name=main& pathname=C%3A%5CUsers%5Ci%5CDocuments%5CTencent+Files%5C2281570025%5CFileRecv%5C a.py HTTP/1.1" 400 68137
从具有url的浏览器请求
实际上可以向服务器发送一个好的请求,在本例中,服务器显示以下内容
^{pr2}$那么,使用HTTPHandler向Django Web服务器发送日志消息的代码有什么问题?在
正如我测试过的:如果我把web服务器的IP地址传递给HTTPHandler的host参数,服务器端会显示http400和无效的http_host header消息,也有异常,粘贴在这里https://bpaste.net/show/f2d2e64e7a7e,而如果我改为传递域名,那么view函数会按预期工作。 那么这会是HTTPHandler中的一个bug吗?在
调试相关代码
django测试\LYYDownloaderServer\VideoParser\网址.py在
from django.conf.urls import url
from . import views
app_name = 'VideoParser'
urlpatterns = [
url(r'lYYDownloaderClientLog.+',views.lYYDownloaderClientLog, name='lYYDownloaderClientLog')
]
django测试\LYYDownloaderServer\VideoParser\视图.py在
def lYYDownloaderClientLog(request):
print('----666666666666---', request.GET)
return HttpResponse("") # The server *successfully* processed the request and is not returning any content.
我在使用Django接收日志时遇到了同样的问题,最后我没有解决,但我知道问题是。在
根据输出,我检查了},然后执行},但在},因为端口!=80,主机是
^{pr2}$logging.handlers.HTTPHandler
的源代码,在这个类中,函数emit
将执行http.client.HTTPSConnection
或{putrequest
和{putrequest
中将执行{host:port
所以我想如果你使用Nginx和80端口,也许你可以解决这个问题
更新: 我终于解决了。我创建一个新类
LogHTTPHandler
,继承HTTPHandler,然后重写函数emit
,并注释掉h.putheader("Host", host)
相关问题 更多 >
编程相关推荐