fast-logger 2.0

This commit is contained in:
Michael Snoyman 2013-12-03 11:55:39 +02:00
parent b18e43c050
commit c670c54ba4
4 changed files with 49 additions and 4 deletions

View File

@ -41,8 +41,9 @@ import Network.Wai.Parse (lbsBackEnd,
tempFileBackEnd)
import System.IO (stdout)
#if MIN_VERSION_fast_logger(2, 0, 0)
import Network.Wai.Logger (ZonedDate)
import Network.Wai.Logger (ZonedDate, clockDateCacher)
import System.Log.FastLogger
import qualified GHC.IO.FD
#else
import System.Log.FastLogger.Date (ZonedDate)
import System.Log.FastLogger (LogStr (..), Logger,
@ -215,7 +216,14 @@ class RenderRoute site => Yesod site where
--
-- Default: Sends to stdout and automatically flushes on each write.
makeLogger :: site -> IO Logger
#if MIN_VERSION_fast_logger(2, 0, 0)
makeLogger _ = do
loggerSet <- newLoggerSet defaultBufSize GHC.IO.FD.stdout
(getter, _) <- clockDateCacher
return $! Logger loggerSet getter
#else
makeLogger _ = mkLogger True stdout
#endif
-- | Send a message to the @Logger@ provided by @getLogger@.
--
@ -529,6 +537,30 @@ asyncHelper render scripts jscript jsLoc =
Nothing -> Nothing
Just j -> Just $ jelper j
#if MIN_VERSION_fast_logger(2, 0, 0)
formatLogMessage :: IO ZonedDate
-> Loc
-> LogSource
-> LogLevel
-> LogStr -- ^ message
-> IO LogStr
formatLogMessage getdate loc src level msg = do
now <- getdate
return $
toLogStr now `mappend`
" [" `mappend`
(case level of
LevelOther t -> toLogStr t
_ -> toLogStr $ drop 5 $ show level) `mappend`
(if T.null src
then mempty
else "#" `mappend` toLogStr src) `mappend`
"] " `mappend`
msg `mappend`
" @(" `mappend`
toLogStr (fileLocationToString loc) `mappend`
")\n"
#else
formatLogMessage :: IO ZonedDate
-> Loc
-> LogSource
@ -554,7 +586,7 @@ formatLogMessage getdate loc src level msg = do
, LS $ fileLocationToString loc
, LB ")\n"
]
#endif
-- | Customize the cookies used by the session backend. You may
-- use this function on your definition of 'makeSessionBackend'.

View File

@ -3,6 +3,7 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE CPP #-}
module Yesod.Core.Dispatch
( -- * Quasi-quoted routing
parseRoutes
@ -163,7 +164,11 @@ warp port site = toWaiApp site >>= Network.Wai.Handler.Warp.runSettings
mkDefaultMiddlewares :: Logger -> IO W.Middleware
mkDefaultMiddlewares logger = do
logWare <- mkRequestLogger def
#if MIN_VERSION_fast_logger(2, 0, 0)
{ destination = Network.Wai.Middleware.RequestLogger.Logger $ loggerSet logger
#else
{ destination = Logger logger
#endif
, outputFormat = Apache FromSocket
}
return $ logWare

View File

@ -36,7 +36,9 @@ import Network.Wai
import Network.Wai.Internal
#endif
import Prelude hiding (catch)
#if !MIN_VERSION_fast_logger(2, 0, 0)
import System.Log.FastLogger (Logger)
#endif
import System.Log.FastLogger (LogStr, toLogStr)
import System.Random (newStdGen)
import Yesod.Core.Content

View File

@ -48,7 +48,7 @@ import Network.Wai (FilePart,
import qualified Network.Wai as W
import qualified Network.Wai.Parse as NWP
#if MIN_VERSION_fast_logger(2, 0, 0)
import System.Log.FastLogger (LogStr, LoggerSet, toLogStr)
import System.Log.FastLogger (LogStr, LoggerSet, toLogStr, pushLogStr)
import Network.Wai.Logger (DateCacheGetter)
#else
import System.Log.FastLogger (LogStr, Logger, toLogStr)
@ -453,5 +453,11 @@ instance ParseRoute WaiSubsite where
parseRoute (x, y) = Just $ WaiSubsiteRoute x y
#if MIN_VERSION_fast_logger(2, 0, 0)
data Logger = Logger !LoggerSet !DateCacheGetter
data Logger = Logger
{ loggerSet :: !LoggerSet
, loggerDate :: !DateCacheGetter
}
loggerPutStr :: Logger -> LogStr -> IO ()
loggerPutStr (Logger ls _) = pushLogStr ls
#endif