diff --git a/Network/Wai/Logger.hs b/Network/Wai/Logger.hs
--- a/Network/Wai/Logger.hs
+++ b/Network/Wai/Logger.hs
@@ -50,12 +50,13 @@
   , showSockAddr
   ) where
 
+import Control.Applicative ((<$>))
 import Control.AutoUpdate (mkAutoUpdate, defaultUpdateSettings, updateAction)
 import Control.Exception (handle, SomeException(..), bracket)
 import Control.Monad (when, void)
 import Network.HTTP.Types (Status)
 import Network.Wai (Request)
-import System.IO (withFile, hFileSize, IOMode(..))
+import System.EasyFile (getFileSize)
 import System.Log.FastLogger
 
 import Network.Wai.Logger.Apache
@@ -187,7 +188,9 @@
   where
     file = log_file spec
     isOver = handle (\(SomeException _) -> return False) $ do
-        siz <- withFile file ReadMode hFileSize
+        -- The log file is locked by GHC.
+        -- We need to get its file size by the way not using locks.
+        siz <- fromIntegral <$> getFileSize file
         return (siz > log_file_size spec)
 
 ----------------------------------------------------------------
diff --git a/wai-logger.cabal b/wai-logger.cabal
--- a/wai-logger.cabal
+++ b/wai-logger.cabal
@@ -1,5 +1,5 @@
 Name:                   wai-logger
-Version:                2.2.0
+Version:                2.2.1
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -23,6 +23,7 @@
                       , byteorder
                       , bytestring
                       , case-insensitive
+                      , easy-file >= 0.2
                       , fast-logger >= 2.2
                       , http-types
                       , network
