Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:日志记录和TCP处理程序_Python_Python 2.7_Logging_Tcp - Fatal编程技术网

Python:日志记录和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

我编写的TCP处理程序如下(改编自:):

它工作得非常完美,现在我正在尝试添加一个记录器:

#!/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”