diff --git a/Network/Wai/Logger/Prefork.hs b/Network/Wai/Logger/Prefork.hs
--- a/Network/Wai/Logger/Prefork.hs
+++ b/Network/Wai/Logger/Prefork.hs
@@ -21,7 +21,7 @@
 
 logInit :: IPAddrSource -> LogType -> IO ApacheLogger
 logInit _ LogNone            = noLoggerInit
-logInit ipsrc LogStdout      = stdoutApacheLoggerInit ipsrc
+logInit ipsrc LogStdout      = stdoutApacheLoggerInit ipsrc True
 logInit ipsrc (LogFile spec) = fileLoggerInit ipsrc spec
 
 noLoggerInit :: IO ApacheLogger
diff --git a/Network/Wai/Logger/Prefork/File.hs b/Network/Wai/Logger/Prefork/File.hs
--- a/Network/Wai/Logger/Prefork/File.hs
+++ b/Network/Wai/Logger/Prefork/File.hs
@@ -14,26 +14,24 @@
 
 ----------------------------------------------------------------
 
-logBufSize :: Int
-logBufSize = 4096
-
-----------------------------------------------------------------
+newtype LoggerRef = LoggerRef (IORef Logger)
 
-newtype HandleRef = HandleRef (IORef Handle)
+getLogger :: LoggerRef -> IO Logger
+getLogger (LoggerRef ref) = readIORef ref
 
-getHandle :: HandleRef -> IO Handle
-getHandle (HandleRef ref) = readIORef ref
+setLogger :: LoggerRef -> Logger -> IO ()
+setLogger (LoggerRef ref) logger = writeIORef ref logger
 
 ----------------------------------------------------------------
 
 fileLoggerInit :: IPAddrSource -> FileLogSpec -> IO ApacheLogger
 fileLoggerInit ipsrc spec = do
     hdl <- open spec
-    hdlref <- HandleRef <$> newIORef hdl
-    forkIO $ fileFlusher hdlref
-    dateref <- dateInit
-    installHandler sigUSR1 (Catch $ reopen spec hdlref) Nothing
-    return $ fileLogger ipsrc dateref hdlref
+    logger <- mkLogger False hdl
+    logref <- LoggerRef <$> newIORef logger
+    _ <- forkIO $ fileFlusher logref
+    _ <- installHandler sigUSR1 (Catch $ reopen spec logref) Nothing
+    return $ fileLogger ipsrc logref
 
 {-
  For BlockBuffering, hPut flushes the buffer before writing
@@ -42,31 +40,26 @@
  just use BlockBuffering.
 -}
 open :: FileLogSpec -> IO Handle
-open spec = do
-    hdl <- openFile file AppendMode
-    hSetBuffering hdl (BlockBuffering (Just logBufSize))
-    return hdl
-  where
-    file = log_file spec
+open spec = openFile (log_file spec) AppendMode
 
-reopen :: FileLogSpec -> HandleRef -> IO ()
-reopen spec (HandleRef ref) = do
-    oldhdl <- readIORef ref
-    open spec >>= writeIORef ref
-    hClose oldhdl
+reopen :: FileLogSpec -> LoggerRef -> IO ()
+reopen spec logref = do
+    oldlogger <- getLogger logref
+    newlogger <- open spec >>= renewLogger oldlogger
+    setLogger logref newlogger
 
 ----------------------------------------------------------------
 
-fileLogger :: IPAddrSource -> DateRef -> HandleRef -> ApacheLogger
-fileLogger ipsrc dateref hdlref req status msiz = do
-    date <- getDate dateref
-    hdl <- getHandle hdlref
-    hPutLogStr hdl $ apacheFormat ipsrc date req status msiz
+fileLogger :: IPAddrSource -> LoggerRef -> ApacheLogger
+fileLogger ipsrc logref req status msiz = do
+    logger <- getLogger logref
+    date <- loggerDate logger
+    loggerPutStr logger $ apacheFormat ipsrc date req status msiz
 
-fileFlusher :: HandleRef -> IO ()
-fileFlusher hdlref = forever $ do
+fileFlusher :: LoggerRef -> IO ()
+fileFlusher logref = forever $ do
     threadDelay 10000000
-    getHandle hdlref >>= hFlush
+    getLogger logref >>= loggerFlush
 
 ----------------------------------------------------------------
 
diff --git a/wai-logger-prefork.cabal b/wai-logger-prefork.cabal
--- a/wai-logger-prefork.cabal
+++ b/wai-logger-prefork.cabal
@@ -1,5 +1,5 @@
 Name:                   wai-logger-prefork
-Version:                0.1.3
+Version:                0.2.0
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -11,7 +11,7 @@
 Build-Type:             Simple
 
 Library
-  GHC-Options:          -Wall -fno-warn-unused-do-bind
+  GHC-Options:          -Wall
   Exposed-Modules:      Network.Wai.Logger.Prefork
   Other-Modules:        Network.Wai.Logger.Prefork.File
                         Network.Wai.Logger.Prefork.Types
@@ -21,7 +21,7 @@
                       , http-types
                       , unix
                       , wai
-                      , wai-logger
+                      , wai-logger >= 0.2 && < 0.3
 
 Source-Repository head
   Type:                 git
