fast-logger 2.1.0 → 2.1.1
raw patch · 2 files changed
+14/−8 lines, 2 files
Files
- System/Log/FastLogger/Logger.hs +12/−7
- fast-logger.cabal +2/−1
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