Python:日志记录和TCP处理程序
我编写的TCP处理程序如下(改编自:): 它工作得非常完美,现在我正在尝试添加一个记录器:Python:日志记录和TCP处理程序,python,python-2.7,logging,tcp,Python,Python 2.7,Logging,Tcp,我编写的TCP处理程序如下(改编自:): 它工作得非常完美,现在我正在尝试添加一个记录器: #!/usr/bin/env python # -*- coding: UTF-8 -*- import SocketServer import logging from logging.handlers import TimedRotatingFileHandler from MyModule import myFunction class MyHandler(SocketServer.Strea
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import SocketServer
import logging
from logging.handlers import TimedRotatingFileHandler
from MyModule import myFunction
class MyHandler(SocketServer.StreamRequestHandler):
def __init__(self):
self.logger = logging.getLogger()
self.logger.setLevel(logging.DEBUG)
self.formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s')
self.file_handler = TimedRotatingFileHandler('my_log_file.log', when='D', interval=1, utc=True)
self.file_handler.setLevel(logging.DEBUG)
self.file_handler.setFormatter(self.formatter)
self.logger.addHandler(self.file_handler)
def handle(self):
self.data = self.rfile.readline().strip()
result = myFunction(self.data)
self.wfile.write(result)
self.logger.info(result)
if __name__ == "__main__":
HOST, PORT = myhost, myport
server = SocketServer.TCPServer((HOST, PORT), MyHandler)
server.serve_forever()
当我运行它时,我得到以下错误:
TypeError:\uuuu init\uuuuuu()正好接受1个参数(给定4个)
我不明白给出的4个论点是什么。
除此之外,代码还有什么问题吗
编辑:完全回溯:
Exception happened during processing of request from ('MyIP', 54028)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 290, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 318, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
TypeError: __init__() takes exactly 1 argument (4 given)
MyHandler
是SocketServer.StreamRequestHandler
的子类,它是BaseRequestHandler
的子类。问题是
回溯错误消息显示
被称为self.RequestHandlerClass
是MyHandler
。所以,,
MyHandler.\uuuu init\uuuu
应具有调用签名
class MyHandler(SocketServer.StreamRequestHandler):
def __init__(self, request, client_address, server):
而不是
class MyHandler(SocketServer.StreamRequestHandler):
def __init__(self):
调用
self.RequestHandlerClass(请求、客户端地址、self)
时,Python调用
RequestHandlerClass
方法,其第一个参数为self
。换句话说,,
RequestHandlerClass(self,request,client\u address,self)
被调用self、request、client\u address、self
是传递给MyHandler
的四个参数。
错误消息
TypeError: __init__() takes exactly 1 argument (4 given)
正在抱怨
MyHandler.\uuuu init\uuuu
被定义为只需要1个参数,但它被传递了4个参数。MyHandler
是SocketServer.StreamRequestHandler
的子类,它是BaseRequestHandler
的子类。问题是
回溯错误消息显示
被称为self.RequestHandlerClass
是MyHandler
。所以,,
MyHandler.\uuuu init\uuuu
应具有调用签名
class MyHandler(SocketServer.StreamRequestHandler):
def __init__(self, request, client_address, server):
而不是
class MyHandler(SocketServer.StreamRequestHandler):
def __init__(self):
调用
self.RequestHandlerClass(请求、客户端地址、self)
时,Python调用
RequestHandlerClass
方法,其第一个参数为self
。换句话说,,
RequestHandlerClass(self,request,client\u address,self)
被调用self、request、client\u address、self
是传递给MyHandler
的四个参数。
错误消息
TypeError: __init__() takes exactly 1 argument (4 given)
正在抱怨
MyHandler.\uuuu init\uuuu
被定义为只需要1个参数,但它被传递了4个参数。请提供完整的回溯。另外,你错过了“self”。在logger.info(result)@MateuszL之前,我添加了完整的回溯和“self”。请提供完整的回溯。此外,您还遗漏了“self”。在logger.info(result)@MateuszL之前,我添加了完整的回溯和“self”