diff --git a/System/Log/FastLogger.hs b/System/Log/FastLogger.hs
--- a/System/Log/FastLogger.hs
+++ b/System/Log/FastLogger.hs
@@ -22,13 +22,16 @@
   , logStrLength
   -- * Writing a log message
   , pushLogStr
+  , pushLogStrLn
   -- * Flushing buffered log messages
   , flushLogStr
   -- * File rotation
   , module System.Log.FastLogger.File
   ) where
 
+#if __GLASGOW_HASKELL__ < 709
 import Control.Applicative ((<$>))
+#endif
 import Control.Debounce (mkDebounce, defaultDebounceSettings, debounceAction)
 import Control.Concurrent (getNumCapabilities, myThreadId, threadCapability, takeMVar)
 import Control.Monad (when, replicateM)
@@ -105,6 +108,10 @@
     fd <- readIORef fref
     pushLog fd logger logmsg
     flush
+
+-- | Same as 'pushLogStr' but also appends a newline.
+pushLogStrLn :: LoggerSet -> LogStr -> IO ()
+pushLogStrLn loggerSet logStr = pushLogStr loggerSet (logStr <> toLogStr "\n")
 
 -- | Flushing log messages in buffers.
 --   This function must be called explicitly when the program is
diff --git a/System/Log/FastLogger/LogStr.hs b/System/Log/FastLogger/LogStr.hs
--- a/System/Log/FastLogger/LogStr.hs
+++ b/System/Log/FastLogger/LogStr.hs
@@ -17,7 +17,9 @@
 import qualified Data.ByteString.Char8 as S8
 import Data.ByteString.Internal (ByteString(..))
 import qualified Data.ByteString.Lazy as BL
+#if __GLASGOW_HASKELL__ < 709
 import Data.Monoid (Monoid, mempty, mappend)
+#endif
 #if MIN_VERSION_base(4,5,0)
 import Data.Monoid ((<>))
 #endif
diff --git a/fast-logger.cabal b/fast-logger.cabal
--- a/fast-logger.cabal
+++ b/fast-logger.cabal
@@ -1,5 +1,5 @@
 Name:                   fast-logger
-Version:                2.3.1
+Version:                2.4.0
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
