diff --git a/docs/topics/logging.rst b/docs/topics/logging.rst index 9580b4c5..be567845 100644 --- a/docs/topics/logging.rst +++ b/docs/topics/logging.rst @@ -124,9 +124,11 @@ Here's how to include them in logs, assuming they're in the def process(self, msg, kwargs): try: websocket = kwargs["extra"]["websocket"] - except KeyError: + except KeyError: # log entry not coming from a connection + return msg, kwargs + if websocket.request is None: # opening handshake not complete return msg, kwargs - xff = websocket.request_headers.get("X-Forwarded-For") + xff = headers.get("X-Forwarded-For") return f"{websocket.id} {xff} {msg}", kwargs async with serve( @@ -165,10 +167,11 @@ a :class:`~logging.LoggerAdapter`:: websocket = kwargs["extra"]["websocket"] except KeyError: return msg, kwargs - kwargs["extra"]["event_data"] = { - "connection_id": str(websocket.id), - "remote_addr": websocket.request_headers.get("X-Forwarded-For"), - } + event_data = {"connection_id": str(websocket.id)} + if websocket.request is not None: # opening handshake complete + headers = websocket.request.headers + event_data["remote_addr"] = headers.get("X-Forwarded-For") + kwargs["extra"]["event_data"] = event_data return msg, kwargs async with serve( diff --git a/src/websockets/server.py b/src/websockets/server.py index 2ab9102f..11ba8b42 100644 --- a/src/websockets/server.py +++ b/src/websockets/server.py @@ -69,7 +69,7 @@ class ServerProtocol(Protocol): max_size: Maximum size of incoming messages in bytes; :obj:`None` disables the limit. logger: Logger for this connection; - defaults to ``logging.getLogger("websockets.client")``; + defaults to ``logging.getLogger("websockets.server")``; see the :doc:`logging guide <../../topics/logging>` for details. """