https://issues.apache.org/jira/browse/LOG4NET-696 - added timeout and log messages
diff --git a/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs b/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs
index 7d5b822..72767bf 100644
--- a/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs
+++ b/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs
@@ -41,11 +41,14 @@
   /// <summary>
   /// Runs the client (in a task)
   /// </summary>
-  internal void Run() => Task.Run(() =>
+  internal void Run(Action<string> log) => Task.Run(() =>
   {
+    log("client: starting ...");
     _client.Connect(new IPEndPoint(IPAddress.Loopback, port));
+    log("client: connected");
     // Get a stream object for reading and writing
     using NetworkStream stream = _client.GetStream();
+    log("client: has stream");
 
     int i;
     byte[] bytes = new byte[256];
@@ -54,9 +57,11 @@
     while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
     {
       string data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
+      log("client: read: " + data);
       received(data);
       if (_cancellationTokenSource.Token.IsCancellationRequested)
       {
+        log("client: canceled");
         return;
       }
     }
diff --git a/src/log4net.Tests/Appender/TelnetAppenderTest.cs b/src/log4net.Tests/Appender/TelnetAppenderTest.cs
index 48bf970..0e8d5f8 100644
--- a/src/log4net.Tests/Appender/TelnetAppenderTest.cs
+++ b/src/log4net.Tests/Appender/TelnetAppenderTest.cs
@@ -70,11 +70,15 @@
     XmlConfigurator.Configure(repository, log4NetConfig["log4net"]!);
     using (SimpleTelnetClient telnetClient = new(Received, port))
     {
-      telnetClient.Run();
+      TestContext.Out.WriteLine("test: starting client ...");
+      telnetClient.Run(TestContext.Out.WriteLine);
       WaitForReceived(1); // wait for welcome message
       ILogger logger = repository.GetLogger("Telnet");
+      TestContext.Out.WriteLine("test: logging to client ...");
       logger.Log(typeof(TelnetAppenderTest), Level.Info, logId, null);
+      TestContext.Out.WriteLine("test: waiting for message of client ...");
       WaitForReceived(2); // wait for log message
+      TestContext.Out.WriteLine("test: canceling client ...");
     }
     repository.Shutdown();
     Assert.That(received, Has.Count.EqualTo(2));
@@ -84,10 +88,18 @@
 
     void WaitForReceived(int count)
     {
+      int retries = 1;
       while (received.Count < count)
       {
+        retries++;
+        TestContext.Out.WriteLine($"receiver: waiting for message {count} of client - retry {retries} failed");
+        if (retries > 100)
+        {
+          Assert.Fail("Timeout waiting for received messages");
+        }
         Thread.Sleep(10);
       }
+      TestContext.Out.WriteLine($"receiver: waiting for message {count} of client - retry {retries} succeeded");
     }
   }
 }
\ No newline at end of file