diff --git a/changelog.d/15120.misc b/changelog.d/15120.misc
new file mode 100644
index 0000000000000000000000000000000000000000..ebbc0c90276dee8cd9e3dbea8f80498e6ac82438
--- /dev/null
+++ b/changelog.d/15120.misc
@@ -0,0 +1 @@
+Tweak logging for when a worker waits for its view of a replication stream to catch up.
\ No newline at end of file
diff --git a/synapse/replication/tcp/client.py b/synapse/replication/tcp/client.py
index cc0528bd8e5fb9802dfaee1e529abe71b7cd5426..424854efbe52eeb7f854b79f608c1ae2829095c2 100644
--- a/synapse/replication/tcp/client.py
+++ b/synapse/replication/tcp/client.py
@@ -370,15 +370,23 @@ class ReplicationDataHandler:
         # We measure here to get in flight counts and average waiting time.
         with Measure(self._clock, "repl.wait_for_stream_position"):
             logger.info(
-                "Waiting for repl stream %r to reach %s (%s)",
+                "Waiting for repl stream %r to reach %s (%s); currently at: %s",
                 stream_name,
                 position,
                 instance_name,
+                current_position,
             )
             try:
                 await make_deferred_yieldable(deferred)
             except defer.TimeoutError:
-                logger.error("Timed out waiting for stream %s", stream_name)
+                logger.error(
+                    "Timed out waiting for repl stream %r to reach %s (%s)"
+                    "; currently at: %s",
+                    stream_name,
+                    position,
+                    instance_name,
+                    self._streams[stream_name].current_token(instance_name),
+                )
                 return
 
             logger.info(