packages feed

wai-logger-prefork 0.1.3 → 0.2.0

raw patch · 3 files changed

+28/−35 lines, 3 filesdep ~wai-logger

Dependency ranges changed: wai-logger

Files

Network/Wai/Logger/Prefork.hs view
@@ -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
Network/Wai/Logger/Prefork/File.hs view
@@ -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  ---------------------------------------------------------------- 
wai-logger-prefork.cabal view
@@ -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