Skip to content

Commit bbffc9e

Browse files
vdusekclaude
andcommitted
fix: Resolve LogRecord attribute conflict in event manager logging
The `extra={'message': message}` in the exception handler overwrites Python's built-in `LogRecord.message` attribute, corrupting the log record and preventing caplog from capturing it (especially on 3.13+). Renamed to `raw_message` to avoid the collision. Also fixed `test_unknown_event_is_logged` which was missing an explicit `caplog.set_level(logging.INFO)` — the unknown event is logged at INFO level but caplog only captures WARNING+ by default. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8a345bd commit bbffc9e

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

src/apify/events/_apify_event_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ async def _process_platform_messages(self, ws_url: str) -> None:
133133
await self._emit_persist_state_event_rec_task.stop()
134134
self.emit(event=Event.PERSIST_STATE, event_data=EventPersistStateData(is_migrating=True))
135135
except Exception:
136-
logger.exception('Cannot parse Actor event', extra={'message': message})
136+
logger.exception('Cannot parse Actor event', extra={'raw_message': message})
137137
except Exception:
138138
logger.exception('Error in websocket connection')
139139
if self._connected_to_platform_websocket is not None:

tests/unit/events/test_apify_event_manager.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ def listener(data: Any) -> None:
264264

265265
async def test_unknown_event_is_logged(monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture) -> None:
266266
"""Test that unknown events are logged and not emitted."""
267+
caplog.set_level(logging.INFO, logger='apify')
267268
connected_ws_clients: set[websockets.asyncio.server.ServerConnection] = set()
268269

269270
async def handler(websocket: websockets.asyncio.server.ServerConnection) -> None:

0 commit comments

Comments
 (0)