diff --git a/src/Middleware/HttpLogging/test/FileLoggerProcessorTests.cs b/src/Middleware/HttpLogging/test/FileLoggerProcessorTests.cs
index 15a23a9f0227aab1e3e78d7a5170c236dec5d965..a3c6bfd9676f64f69dfffb898a6e658a29ca6ecf 100644
--- a/src/Middleware/HttpLogging/test/FileLoggerProcessorTests.cs
+++ b/src/Middleware/HttpLogging/test/FileLoggerProcessorTests.cs
@@ -19,6 +19,11 @@ namespace Microsoft.AspNetCore.HttpLogging
 {
     public class FileLoggerProcessorTests
     {
+
+        private string _messageOne = "Message one";
+        private string _messageTwo = "Message two";
+        private string _messageThree = "Message three";
+
         public FileLoggerProcessorTests()
         {
             TempPath = Path.GetTempFileName() + "_";
@@ -41,12 +46,12 @@ namespace Microsoft.AspNetCore.HttpLogging
                 };
                 await using (var logger = new FileLoggerProcessor(new OptionsWrapperMonitor<W3CLoggerOptions>(options), new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message one");
+                    logger.EnqueueMessage(_messageOne);
                     fileName = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0000.txt"));
                     // Pause for a bit before disposing so logger can finish logging
                     try
                     {
-                        await WaitForFile(fileName).DefaultTimeout();
+                        await WaitForFile(fileName, _messageOne.Length).DefaultTimeout();
                     }
                     catch
                     {
@@ -60,7 +65,7 @@ namespace Microsoft.AspNetCore.HttpLogging
                 }
                 Assert.True(File.Exists(fileName));
 
-                Assert.Equal("Message one" + Environment.NewLine, File.ReadAllText(fileName));
+                Assert.Equal(_messageOne + Environment.NewLine, File.ReadAllText(fileName));
             }
             finally
             {
@@ -86,14 +91,14 @@ namespace Microsoft.AspNetCore.HttpLogging
                 };
                 await using (var logger = new FileLoggerProcessor(new OptionsWrapperMonitor<W3CLoggerOptions>(options), new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message one");
-                    logger.EnqueueMessage("Message two");
+                    logger.EnqueueMessage(_messageOne);
+                    logger.EnqueueMessage(_messageTwo);
                     fileName1 = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0000.txt"));
                     fileName2 = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0001.txt"));
                     // Pause for a bit before disposing so logger can finish logging
                     try
                     {
-                        await WaitForFile(fileName2).DefaultTimeout();
+                        await WaitForFile(fileName2, _messageTwo.Length).DefaultTimeout();
                     }
                     catch
                     {
@@ -114,8 +119,8 @@ namespace Microsoft.AspNetCore.HttpLogging
                 Assert.True(File.Exists(fileName1));
                 Assert.True(File.Exists(fileName2));
 
-                Assert.Equal("Message one" + Environment.NewLine, File.ReadAllText(fileName1));
-                Assert.Equal("Message two" + Environment.NewLine, File.ReadAllText(fileName2));
+                Assert.Equal(_messageOne + Environment.NewLine, File.ReadAllText(fileName1));
+                Assert.Equal(_messageTwo + Environment.NewLine, File.ReadAllText(fileName2));
             }
             finally
             {
@@ -145,13 +150,13 @@ namespace Microsoft.AspNetCore.HttpLogging
                 {
                     for (int i = 0; i < 10; i++)
                     {
-                        logger.EnqueueMessage("Message");
+                        logger.EnqueueMessage(_messageOne);
                     }
                     lastFileName = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0009.txt"));
                     // Pause for a bit before disposing so logger can finish logging
                     try
                     {
-                        await WaitForFile(lastFileName).DefaultTimeout();
+                        await WaitForFile(lastFileName, _messageOne.Length).DefaultTimeout();
                         for (int i = 0; i < 6; i++)
                         {
                             await WaitForRoll(Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.{i:0000}.txt"))).DefaultTimeout();
@@ -211,11 +216,11 @@ namespace Microsoft.AspNetCore.HttpLogging
                 {
                     for (int i = 0; i < 3; i++)
                     {
-                        logger.EnqueueMessage("Message");
+                        logger.EnqueueMessage(_messageOne);
                     }
                     var filePath = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0002.txt"));
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(filePath).DefaultTimeout();
+                    await WaitForFile(filePath, _messageOne.Length).DefaultTimeout();
                 }
 
                 // Second instance should pick up where first one left off
@@ -223,11 +228,11 @@ namespace Microsoft.AspNetCore.HttpLogging
                 {
                     for (int i = 0; i < 3; i++)
                     {
-                        logger.EnqueueMessage("Message");
+                        logger.EnqueueMessage(_messageOne);
                     }
                     var filePath = Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0005.txt"));
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(filePath).DefaultTimeout();
+                    await WaitForFile(filePath, _messageOne.Length).DefaultTimeout();
                 }
 
                 var actualFiles1 = new DirectoryInfo(path)
@@ -246,9 +251,9 @@ namespace Microsoft.AspNetCore.HttpLogging
                 options.RetainedFileCountLimit = 5;
                 await using (var logger = new FileLoggerProcessor(new OptionsWrapperMonitor<W3CLoggerOptions>(options), new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message");
+                    logger.EnqueueMessage(_messageOne);
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0006.txt"))).DefaultTimeout();
+                    await WaitForFile(Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0006.txt")), _messageOne.Length).DefaultTimeout();
                     await WaitForRoll(Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0000.txt"))).DefaultTimeout();
                     await WaitForRoll(Path.Combine(path, FormattableString.Invariant($"{options.FileName}{now.Year:0000}{now.Month:00}{now.Day:00}.0001.txt"))).DefaultTimeout();
                 }
@@ -298,10 +303,10 @@ namespace Microsoft.AspNetCore.HttpLogging
 
                 await using (var logger = new FileLoggerProcessor(new OptionsWrapperMonitor<W3CLoggerOptions>(options), new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message one");
-                    logger.EnqueueMessage("Message two");
+                    logger.EnqueueMessage(_messageOne);
+                    logger.EnqueueMessage(_messageTwo);
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(fileName2).DefaultTimeout();
+                    await WaitForFile(fileName2, _messageTwo.Length).DefaultTimeout();
                 }
 
                 // Even with a big enough FileSizeLimit, we still won't try to write to files from a previous instance.
@@ -309,9 +314,9 @@ namespace Microsoft.AspNetCore.HttpLogging
 
                 await using (var logger = new FileLoggerProcessor(new OptionsWrapperMonitor<W3CLoggerOptions>(options), new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message three");
+                    logger.EnqueueMessage(_messageThree);
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(fileName3).DefaultTimeout();
+                    await WaitForFile(fileName3, _messageThree.Length).DefaultTimeout();
                 }
 
                 var actualFiles = new DirectoryInfo(path)
@@ -326,9 +331,9 @@ namespace Microsoft.AspNetCore.HttpLogging
                 Assert.True(File.Exists(fileName2));
                 Assert.True(File.Exists(fileName3));
 
-                Assert.Equal("Message one" + Environment.NewLine, File.ReadAllText(fileName1));
-                Assert.Equal("Message two" + Environment.NewLine, File.ReadAllText(fileName2));
-                Assert.Equal("Message three" + Environment.NewLine, File.ReadAllText(fileName3));
+                Assert.Equal(_messageOne + Environment.NewLine, File.ReadAllText(fileName1));
+                Assert.Equal(_messageTwo + Environment.NewLine, File.ReadAllText(fileName2));
+                Assert.Equal(_messageThree + Environment.NewLine, File.ReadAllText(fileName3));
             }
             finally
             {
@@ -364,13 +369,13 @@ namespace Microsoft.AspNetCore.HttpLogging
 
                 await using (var logger = new FileLoggerProcessor(monitor, new HostingEnvironment(), NullLoggerFactory.Instance))
                 {
-                    logger.EnqueueMessage("Message one");
-                    await WaitForFile(fileName1).DefaultTimeout();
+                    logger.EnqueueMessage(_messageOne);
+                    await WaitForFile(fileName1, _messageOne.Length).DefaultTimeout();
                     options.LoggingFields = W3CLoggingFields.Date;
                     monitor.InvokeChanged();
-                    logger.EnqueueMessage("Message two");
+                    logger.EnqueueMessage(_messageTwo);
                     // Pause for a bit before disposing so logger can finish logging
-                    await WaitForFile(fileName2).DefaultTimeout();
+                    await WaitForFile(fileName2, _messageTwo.Length).DefaultTimeout();
                 }
 
                 var actualFiles = new DirectoryInfo(path)
@@ -384,8 +389,8 @@ namespace Microsoft.AspNetCore.HttpLogging
                 Assert.True(File.Exists(fileName1));
                 Assert.True(File.Exists(fileName2));
 
-                Assert.Equal("Message one" + Environment.NewLine, File.ReadAllText(fileName1));
-                Assert.Equal("Message two" + Environment.NewLine, File.ReadAllText(fileName2));
+                Assert.Equal(_messageOne + Environment.NewLine, File.ReadAllText(fileName1));
+                Assert.Equal(_messageTwo + Environment.NewLine, File.ReadAllText(fileName2));
             }
             finally
             {
@@ -393,12 +398,27 @@ namespace Microsoft.AspNetCore.HttpLogging
             }
         }
 
-        private async Task WaitForFile(string fileName)
+        private async Task WaitForFile(string fileName, int length)
         {
             while (!File.Exists(fileName))
             {
                 await Task.Delay(100);
             }
+            while (true)
+            {
+                try
+                {
+                    if (File.ReadAllText(fileName).Length >= length)
+                    {
+                        break;
+                    }
+                }
+                catch
+                {
+                    // Continue
+                }
+                await Task.Delay(10);
+            }    
         }
 
         private async Task WaitForRoll(string fileName)