diff --git a/libpod/container_log.go b/libpod/container_log.go
index 36b89f1ae6..f73a5ffbf7 100644
--- a/libpod/container_log.go
+++ b/libpod/container_log.go
@@ -2,6 +2,7 @@ package libpod
 
 import (
 	"os"
+	"time"
 
 	"github.com/containers/libpod/libpod/define"
 	"github.com/containers/libpod/libpod/logs"
@@ -30,13 +31,6 @@ func (c *Container) ReadLog(options *logs.LogOptions, logChannel chan *logs.LogL
 }
 
 func (c *Container) readFromLogFile(options *logs.LogOptions, logChannel chan *logs.LogLine) error {
-	state, err := c.State()
-	if err != nil {
-		return err
-	}
-	if state != define.ContainerStateRunning && state != define.ContainerStatePaused {
-		options.Follow = false
-	}
 	t, tailLog, err := logs.GetLogFile(c.LogPath(), options)
 	if err != nil {
 		// If the log file does not exist, this is not fatal.
@@ -76,16 +70,25 @@ func (c *Container) readFromLogFile(options *logs.LogOptions, logChannel chan *l
 			if nll.Since(options.Since) {
 				logChannel <- nll
 			}
-			state, err := c.State()
-			if err != nil {
-				logrus.Error(err)
-				break
-			}
-			if options.Follow && state != define.ContainerStateRunning && state != define.ContainerStatePaused {
-				t.Kill(err)
-			}
 		}
 		options.WaitGroup.Done()
 	}()
+	// Check if container is still running or paused
+	go func() {
+		if options.Follow {
+			for {
+				state, err := c.State()
+				if err != nil {
+					logrus.Error(err)
+					break
+				}
+				if state != define.ContainerStateRunning && state != define.ContainerStatePaused {
+					t.StopAtEOF()
+					break
+				}
+				time.Sleep(1 * time.Second)
+			}
+		}
+	}()
 	return nil
 }