我正在使用websockets
包在python中创建一个websocket服务器;同时,我在不同的日志级别大量使用logging
。
websockets
documentation提到了记录器配置,可以使用
ERROR
。
logger = logging.getLogger('websockets.server')
logger.setLevel(logging.ERROR)
logger.addHandler(logging.StreamHandler())
但是,这对我放置在我的代码中的任何位置(在导入下面,在websockets
之前,在__main__
中)都无效。我想要两种配置-一种是全局日志记录配置,另一种是websockets服务器的logger配置。
另一个选择是完全禁用websockets模块的日志记录,但是我不知道该怎么做。有什么想法吗?
答案 0 :(得分:0)
事实证明,发出大量调试消息的不仅是websockets.server
,还有其他消息。我最终通过使用root记录器配置中的%(name)s
字段来查找那些软件包,并发现websockets.protocol
负责了其他消息。
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(name)s %(levelname)-8s %(message)s',
datefmt='(%H:%M:%S)')
# disable all loggers from different files
logging.getLogger('asyncio').setLevel(logging.ERROR)
logging.getLogger('asyncio.coroutines').setLevel(logging.ERROR)
logging.getLogger('websockets.server').setLevel(logging.ERROR)
logging.getLogger('websockets.protocol').setLevel(logging.ERROR)
答案 1 :(得分:0)
启动网络套接字时,设置:
websocket.enableTrace(False)
在控制台中不会记录或显示任何DEBUG和hart beat消息。
我的示例代码:
def start_websocket(url, listen_method):
"""
Start a websocket connection.
:param url: string
:param listen_method: method
"""
# Enable or Disable logging
websocket.enableTrace(False)
ws = websocket.WebSocketApp(
url,
on_message=listen_method,
on_error=on_error,
on_close=on_close
)
ws.on_open = on_open
ws.run_forever(ping_interval=3, ping_timeout=2)