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 +1/−1
- Network/Wai/Logger/Prefork/File.hs +24/−31
- wai-logger-prefork.cabal +3/−3
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