packages feed

fast-logger 2.1.0 → 2.1.1

raw patch · 2 files changed

+14/−8 lines, 2 files

Files

System/Log/FastLogger/Logger.hs view
@@ -19,6 +19,8 @@  data Logger = Logger (MVar Buffer) !BufSize (IORef LogStr) +----------------------------------------------------------------+ newLogger :: BufSize -> IO Logger newLogger size = do     buf <- getBuffer size@@ -26,21 +28,25 @@     lref <- newIORef mempty     return $ Logger mbuf size lref +----------------------------------------------------------------+ pushLog :: FD -> Logger -> LogStr -> IO () pushLog fd logger@(Logger mbuf size ref) nlogmsg@(LogStr nlen nbuilder)   | nlen > size = do       flushLog fd logger       withMVar mbuf $ \buf -> toBufIOWith buf nlen (write fd) nbuilder   | otherwise = do-    needFlush <- atomicModifyIORef' ref checkBuf-    when needFlush $ do-        flushLog fd logger-        pushLog fd logger nlogmsg+    mmsg <- atomicModifyIORef' ref checkBuf+    case mmsg of+        Nothing  -> return ()+        Just msg -> withMVar mbuf $ \buf -> writeLogStr fd buf size msg   where     checkBuf ologmsg@(LogStr olen _)-      | size < olen + nlen = (ologmsg, True)-      | otherwise          = (ologmsg <> nlogmsg, False)+      | size < olen + nlen = (nlogmsg, Just ologmsg)+      | otherwise          = (ologmsg <> nlogmsg, Nothing) +----------------------------------------------------------------+ flushLog :: FD -> Logger -> IO () flushLog fd (Logger mbuf size lref) = do     logmsg <- atomicModifyIORef' lref (\old -> (mempty, old))@@ -73,4 +79,3 @@         written <- writeRawBufferPtr "write" fd bf 0 (fromIntegral len)         when (written < len) $             loop (bf `plusPtr` fromIntegral written) (len - written)-
fast-logger.cabal view
@@ -1,5 +1,5 @@ Name:                   fast-logger-Version:                2.1.0+Version:                2.1.1 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3@@ -35,6 +35,7 @@     Ghc-Options:     -Wall -threaded     Build-Depends:   base >= 4 && < 5                    , bytestring+                   , directory                    , fast-logger                    , hspec