yesod-core 1.4.9.1 → 1.4.10
raw patch · 4 files changed
+65/−15 lines, 4 files
Files
- ChangeLog.md +4/−0
- Yesod/Core.hs +5/−0
- Yesod/Core/Class/Yesod.hs +55/−14
- yesod-core.cabal +1/−1
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.4.10++* Export log formatting [#1001](https://github.com/yesodweb/yesod/pull/1001)+ ## 1.4.9.1 * Deal better with multiple cookie headers
Yesod/Core.hs view
@@ -30,6 +30,11 @@ , AuthResult (..) , unauthorizedI -- * Logging+ , defaultMakeLogger+ , defaultMessageLoggerSource+ , defaultShouldLog+ , defaultShouldLogIO+ , formatLogMessage , LogLevel (..) , logDebug , logInfo
Yesod/Core/Class/Yesod.hs view
@@ -26,7 +26,6 @@ import Data.List (foldl') import Data.List (nub) import qualified Data.Map as Map-import Data.Maybe (fromMaybe) import Data.Monoid import Data.Text (Text) import qualified Data.Text as T@@ -207,17 +206,14 @@ -- method return that already created value. That way, you can use that -- same @Logger@ for printing messages during app initialization. --- -- Default: Sends to stdout and automatically flushes on each write.+ -- Default: the 'defaultMakeLogger' function. makeLogger :: site -> IO Logger- makeLogger _ = do- loggerSet' <- newStdoutLoggerSet defaultBufSize- (getter, _) <- clockDateCacher- return $! Logger loggerSet' getter+ makeLogger _ = defaultMakeLogger -- | Send a message to the @Logger@ provided by @getLogger@. --- -- Default implementation: checks if the message should be logged using- -- 'shouldLog' and, if so, formats using 'formatLogMessage'.+ -- Default: the 'defaultMessageLoggerSource' function, using+ -- 'shouldLogIO' to check whether we should log. messageLoggerSource :: site -> Logger -> Loc -- ^ position in source code@@ -225,10 +221,7 @@ -> LogLevel -> LogStr -- ^ message -> IO ()- messageLoggerSource a logger loc source level msg = do- sl <- shouldLogIO a source level- when sl $- formatLogMessage (loggerDate logger) loc source level msg >>= loggerPutStr logger+ messageLoggerSource site = defaultMessageLoggerSource $ shouldLogIO site -- | Where to Load sripts from. We recommend the default value, -- 'BottomOfBody'. Alternatively use the built in async yepnope loader:@@ -260,9 +253,9 @@ -- | Should we log the given log source/level combination. --- -- Default: Logs everything at or above 'logLevel'+ -- Default: the 'defaultShouldLog' function. shouldLog :: site -> LogSource -> LogLevel -> Bool- shouldLog _ _ level = level >= LevelInfo+ shouldLog _ = defaultShouldLog -- | Should we log the given log source/level combination. --@@ -300,6 +293,51 @@ yesodWithInternalState _ _ = bracket createInternalState closeInternalState {-# INLINE yesodWithInternalState #-} +-- | Default implementation of 'makeLogger'. Sends to stdout and+-- automatically flushes on each write.+--+-- Since 1.4.10+defaultMakeLogger :: IO Logger+defaultMakeLogger = do+ loggerSet' <- newStdoutLoggerSet defaultBufSize+ (getter, _) <- clockDateCacher+ return $! Logger loggerSet' getter++-- | Default implementation of 'messageLoggerSource'. Checks if the+-- message should be logged using the provided function, and if so,+-- formats using 'formatLogMessage'. You can use 'defaultShouldLogIO'+-- as the provided function.+--+-- Since 1.4.10+defaultMessageLoggerSource ::+ (LogSource -> LogLevel -> IO Bool) -- ^ Check whether we should+ -- log this+ -> Logger+ -> Loc -- ^ position in source code+ -> LogSource+ -> LogLevel+ -> LogStr -- ^ message+ -> IO ()+defaultMessageLoggerSource ckLoggable logger loc source level msg = do+ loggable <- ckLoggable source level+ when loggable $+ formatLogMessage (loggerDate logger) loc source level msg >>=+ loggerPutStr logger++-- | Default implementation of 'shouldLog'. Logs everything at or+-- above 'LevelInfo'.+--+-- Since 1.4.10+defaultShouldLog :: LogSource -> LogLevel -> Bool+defaultShouldLog _ level = level >= LevelInfo++-- | A default implementation of 'shouldLogIO' that can be used with+-- 'defaultMessageLoggerSource'. Just uses 'defaultShouldLog'.+--+-- Since 1.4.10+defaultShouldLogIO :: LogSource -> LogLevel -> IO Bool+defaultShouldLogIO a b = return $ defaultShouldLog a b+ -- | Default implementation of 'yesodMiddleware'. Adds the response header -- \"Vary: Accept, Accept-Language\" and performs authorization checks. --@@ -577,6 +615,9 @@ Nothing -> Nothing Just j -> Just $ jelper j +-- | Default formatting for log messages.+--+-- Since 1.4.10 formatLogMessage :: IO ZonedDate -> Loc -> LogSource
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 1.4.9.1+version: 1.4.10 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>