LogSource (#405)

This commit is contained in:
Michael Snoyman 2012-09-21 15:01:04 +03:00
parent cf4fed8cb9
commit 7bd06e9b7b
4 changed files with 34 additions and 13 deletions

View File

@ -194,7 +194,7 @@ data HandlerData sub master = HandlerData
, handlerToMaster :: Route sub -> Route master , handlerToMaster :: Route sub -> Route master
, handlerState :: I.IORef GHState , handlerState :: I.IORef GHState
, handlerUpload :: Word64 -> FileUpload , handlerUpload :: Word64 -> FileUpload
, handlerLog :: Loc -> LogLevel -> LogStr -> IO () , handlerLog :: Loc -> LogSource -> LogLevel -> LogStr -> IO ()
} }
handlerSubData :: (Route sub -> Route master) handlerSubData :: (Route sub -> Route master)
@ -471,7 +471,7 @@ runHandler :: HasReps c
-> master -> master
-> sub -> sub
-> (Word64 -> FileUpload) -> (Word64 -> FileUpload)
-> (Loc -> LogLevel -> LogStr -> IO ()) -> (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-> YesodApp -> YesodApp
runHandler handler mrender sroute tomr master sub upload log' = runHandler handler mrender sroute tomr master sub upload log' =
YesodApp $ \eh rr cts initSession -> do YesodApp $ \eh rr cts initSession -> do
@ -881,7 +881,7 @@ handlerToYAR :: (HasReps a, HasReps b)
=> master -- ^ master site foundation => master -- ^ master site foundation
-> sub -- ^ sub site foundation -> sub -- ^ sub site foundation
-> (Word64 -> FileUpload) -> (Word64 -> FileUpload)
-> (Loc -> LogLevel -> LogStr -> IO ()) -> (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-> (Route sub -> Route master) -> (Route sub -> Route master)
-> (Route master -> [(Text, Text)] -> Text) -- route renderer -> (Route master -> [(Text, Text)] -> Text) -- route renderer
-> (ErrorResponse -> GHandler sub master a) -> (ErrorResponse -> GHandler sub master a)
@ -1056,6 +1056,7 @@ instance MonadResource (GHandler sub master) where
#endif #endif
instance MonadLogger (GHandler sub master) where instance MonadLogger (GHandler sub master) where
monadLoggerLog a b c = do monadLoggerLog a c d = monadLoggerLogSource a "" c d
monadLoggerLogSource a b c d = do
hd <- ask hd <- ask
liftIO $ handlerLog hd a b (toLogStr c) liftIO $ handlerLog hd a b c (toLogStr d)

View File

@ -90,7 +90,7 @@ import Network.Wai.Parse (tempFileBackEnd, lbsBackEnd)
import qualified Paths_yesod_core import qualified Paths_yesod_core
import Data.Version (showVersion) import Data.Version (showVersion)
import System.Log.FastLogger (Logger, mkLogger, loggerDate, LogStr (..), loggerPutStr) import System.Log.FastLogger (Logger, mkLogger, loggerDate, LogStr (..), loggerPutStr)
import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther)) import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther), LogSource)
import System.Log.FastLogger.Date (ZonedDate) import System.Log.FastLogger.Date (ZonedDate)
import System.IO (stdout) import System.IO (stdout)
@ -305,16 +305,29 @@ $doctype 5
getLogger _ = mkLogger True stdout getLogger _ = mkLogger True stdout
-- | Send a message to the @Logger@ provided by @getLogger@. -- | Send a message to the @Logger@ provided by @getLogger@.
--
-- Note: This method is no longer used. Instead, you should override
-- 'messageLoggerSource'.
messageLogger :: a messageLogger :: a
-> Logger -> Logger
-> Loc -- ^ position in source code -> Loc -- ^ position in source code
-> LogLevel -> LogLevel
-> LogStr -- ^ message -> LogStr -- ^ message
-> IO () -> IO ()
messageLogger a logger loc level msg = messageLogger a logger loc = messageLoggerSource a logger loc ""
if level < logLevel a
then return () -- | Send a message to the @Logger@ provided by @getLogger@.
else formatLogMessage (loggerDate logger) loc level msg >>= loggerPutStr logger messageLoggerSource :: a
-> Logger
-> Loc -- ^ position in source code
-> LogSource
-> LogLevel
-> LogStr -- ^ message
-> IO ()
messageLoggerSource a logger loc source level msg =
if shouldLog a source level
then formatLogMessage (loggerDate logger) loc level msg >>= loggerPutStr logger
else return ()
-- | The logging level in place for this application. Any messages below -- | The logging level in place for this application. Any messages below
-- this level will simply be ignored. -- this level will simply be ignored.
@ -353,6 +366,12 @@ $doctype 5
| size > 50000 = FileUploadDisk tempFileBackEnd | size > 50000 = FileUploadDisk tempFileBackEnd
| otherwise = FileUploadMemory lbsBackEnd | otherwise = FileUploadMemory lbsBackEnd
-- | Should we log the given log source/level combination.
--
-- Default: Logs everything at or above 'logLevel'
shouldLog :: a -> LogSource -> LogLevel -> Bool
shouldLog a _ level = level >= logLevel a
formatLogMessage :: IO ZonedDate formatLogMessage :: IO ZonedDate
-> Loc -> Loc
-> LogLevel -> LogLevel
@ -424,7 +443,7 @@ defaultYesodRunner logger handler master sub murl toMasterRoute msb req
handler handler
let sessionMap = Map.fromList . filter ((/=) tokenKey . fst) $ session let sessionMap = Map.fromList . filter ((/=) tokenKey . fst) $ session
let ra = resolveApproot master req let ra = resolveApproot master req
let log' = messageLogger master logger let log' = messageLoggerSource master logger
yar <- handlerToYAR master sub (fileUpload master) log' toMasterRoute yar <- handlerToYAR master sub (fileUpload master) log' toMasterRoute
(yesodRender master ra) errorHandler rr murl sessionMap h (yesodRender master ra) errorHandler rr murl sessionMap h
extraHeaders <- case yar of extraHeaders <- case yar of
@ -802,7 +821,7 @@ runFakeHandler fakeSessionMap logger master handler = liftIO $ do
master master
master master
(fileUpload master) (fileUpload master)
(messageLogger master $ logger master) (messageLoggerSource master $ logger master)
errHandler err = errHandler err =
YesodApp $ \_ _ _ session -> do YesodApp $ \_ _ _ session -> do
liftIO $ I.writeIORef ret (Left err) liftIO $ I.writeIORef ret (Left err)

View File

@ -352,3 +352,4 @@ instance MonadResource (GWidget sub master) where
instance MonadLogger (GWidget sub master) where instance MonadLogger (GWidget sub master) where
monadLoggerLog a b = lift . monadLoggerLog a b monadLoggerLog a b = lift . monadLoggerLog a b
monadLoggerLogSource a b c = lift . monadLoggerLogSource a b c

View File

@ -78,7 +78,7 @@ library
, vector >= 0.9 && < 0.10 , vector >= 0.9 && < 0.10
, aeson >= 0.5 , aeson >= 0.5
, fast-logger >= 0.2 , fast-logger >= 0.2
, monad-logger >= 0.2 && < 0.3 , monad-logger >= 0.2.1 && < 0.3
, conduit >= 0.5 && < 0.6 , conduit >= 0.5 && < 0.6
, resourcet >= 0.3 && < 0.5 , resourcet >= 0.3 && < 0.5
, lifted-base >= 0.1 && < 0.2 , lifted-base >= 0.1 && < 0.2