Отключить Logger для пакета websockets в Python - PullRequest
0 голосов
/ 11 сентября 2018

Я использую пакет websockets для создания сервера веб-сокетов в python; в то же время я интенсивно использую logging в разных лог-уровнях.

В документации websockets упоминается конфигурация регистратора, и что она может быть изменена до уровня журнала ERROR с помощью

     logger = logging.getLogger('websockets.server')
     logger.setLevel(logging.ERROR)
     logger.addHandler(logging.StreamHandler())

Это, однако, не оказывает никакого влияния на мой код, где бы я его ни размещал (ниже импорта, до импорта websockets, в пределах __main__). Я хотел бы иметь две конфигурации - одну глобальную конфигурацию регистрации и конфигурацию регистрации сервера websockets.

Другой вариант - полностью отключить ведение журнала для модуля websockets, но я не могу понять, как это сделать. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Когда вы запускаете веб-сокет, установите:

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)
0 голосов
/ 11 сентября 2018

Оказывается, не только websockets.server генерирует много отладочных сообщений, но и другие. Я закончил поиск этих пакетов с помощью поля %(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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...