使用decorator[Python]调试代码
我正在用python编写一些代码,试图创建一个简单的面向对象的套接字服务器客户端连接。我希望保持我的代码干净,因此我希望排除过多的“if”语句。因此,我的服务器套接字类定义如下所示:使用decorator[Python]调试代码,python,python-3.x,sockets,decorator,python-decorators,Python,Python 3.x,Sockets,Decorator,Python Decorators,我正在用python编写一些代码,试图创建一个简单的面向对象的套接字服务器客户端连接。我希望保持我的代码干净,因此我希望排除过多的“if”语句。因此,我的服务器套接字类定义如下所示: class Server(object): def __init__(server_ip=LOCALHOST, server_port=55555, debug=True): # other code pass 因此,如果有一段话,当进行某种调试看起来很有用时,我已经包
class Server(object):
def __init__(server_ip=LOCALHOST, server_port=55555, debug=True):
# other code
pass
因此,如果有一段话,当进行某种调试看起来很有用时,我已经包含了一个if语句,如下所示:
if debug:
print("Something that helps the code debugging")
因此,我想知道是否有一种方法可以从主类中排除这种类型的代码块,并将它们添加到定义装饰器的包装器函数中。可能吗?如果是这样,我如何实现这个功能
非常感谢您抽出时间,同时,请原谅我的英语,我还在练习呢 由您决定,但实际上,对于日志逻辑,使用内置日志模块非常方便,该模块具有清晰的设置模式:
import logging
logger = logging.getLogger(__name__)
log_handler = logging.streamHandler() # to output logs into stderr by default
logger.addHandler(log_handler)
logger.setLevel(logging.DEBUG) # here you set log level, you need to parametrize it (or dive deeper into logging docs)
def your_foo():
logger.debug('Debug log message') # will only fire if log level == DEBUG
如果您仍然想坚持使用decorator,我可以建议您进行以下讨论(关于decorators的部分):这取决于您,但实际上对于日志逻辑,使用内置日志模块非常方便,它有一个清晰的设置模式:
import logging
logger = logging.getLogger(__name__)
log_handler = logging.streamHandler() # to output logs into stderr by default
logger.addHandler(log_handler)
logger.setLevel(logging.DEBUG) # here you set log level, you need to parametrize it (or dive deeper into logging docs)
def your_foo():
logger.debug('Debug log message') # will only fire if log level == DEBUG
如果你仍然想坚持使用decorator,我可以建议你做这个演讲(decorators部分):有关如何实现日志装饰的信息,请参见创建日志记录模块的目的:我几乎不再使用打印语句。有关如何实现日志装饰的信息,请参见创建日志记录模块的目的:我几乎不再使用打印语句。非常感谢您抽出时间,我真的很感激你的帮助,当然,我会考虑并尝试使用你的建议。如果我可以请你进一步帮助,我已经在这个链接上发布了另一个问题:。如果你能看一下并回答,我将非常感激。无论如何,非常感谢你的帮助!非常感谢你抽出时间,尤里,我真的很感谢你的帮助,当然,我会看看你的建议并尝试使用。如果我可以请你进一步帮助,我已经在这个链接上发布了另一个问题:。如果你能看一下并回答,我将非常感激。无论如何,非常感谢你的帮助!