messageLogger
This commit is contained in:
parent
300fe9031f
commit
06ad6c254b
@ -19,6 +19,9 @@ module Yesod.Core
|
|||||||
, defaultErrorHandler
|
, defaultErrorHandler
|
||||||
-- * Data types
|
-- * Data types
|
||||||
, AuthResult (..)
|
, AuthResult (..)
|
||||||
|
-- * Logging
|
||||||
|
, LogLevel (..)
|
||||||
|
, formatLogMessage
|
||||||
-- * Misc
|
-- * Misc
|
||||||
, yesodVersion
|
, yesodVersion
|
||||||
, yesodRender
|
, yesodRender
|
||||||
@ -63,6 +66,10 @@ import Blaze.ByteString.Builder (Builder, toByteString)
|
|||||||
import Blaze.ByteString.Builder.Char.Utf8 (fromText)
|
import Blaze.ByteString.Builder.Char.Utf8 (fromText)
|
||||||
import Data.List (foldl')
|
import Data.List (foldl')
|
||||||
import qualified Network.HTTP.Types as H
|
import qualified Network.HTTP.Types as H
|
||||||
|
import qualified Data.Text.Lazy as TL
|
||||||
|
import qualified Data.Text.Lazy.IO
|
||||||
|
import qualified System.IO
|
||||||
|
import qualified Data.Text.Lazy.Builder as TB
|
||||||
|
|
||||||
#if GHC7
|
#if GHC7
|
||||||
#define HAMLET hamlet
|
#define HAMLET hamlet
|
||||||
@ -236,6 +243,34 @@ class RenderRoute (Route a) => Yesod a where
|
|||||||
maximumContentLength :: a -> Maybe (Route a) -> Int
|
maximumContentLength :: a -> Maybe (Route a) -> Int
|
||||||
maximumContentLength _ _ = 2 * 1024 * 1024 -- 2 megabytes
|
maximumContentLength _ _ = 2 * 1024 * 1024 -- 2 megabytes
|
||||||
|
|
||||||
|
-- | Send a message to the log. By default, prints to stderr.
|
||||||
|
messageLogger :: a
|
||||||
|
-> LogLevel
|
||||||
|
-> Text -- ^ source
|
||||||
|
-> Text -- ^ message
|
||||||
|
-> IO ()
|
||||||
|
messageLogger _ level src msg =
|
||||||
|
formatLogMessage level src msg >>=
|
||||||
|
Data.Text.Lazy.IO.hPutStrLn System.IO.stderr
|
||||||
|
|
||||||
|
data LogLevel = LevelDebug | LevelInfo | LevelWarn | LevelError | LevelOther Text
|
||||||
|
deriving (Eq, Show, Read, Ord)
|
||||||
|
|
||||||
|
formatLogMessage :: LogLevel
|
||||||
|
-> Text -- ^ source
|
||||||
|
-> Text -- ^ message
|
||||||
|
-> IO TL.Text
|
||||||
|
formatLogMessage level src msg = do
|
||||||
|
now <- getCurrentTime
|
||||||
|
return $ TB.toLazyText $
|
||||||
|
TB.fromText (TS.pack $ show now)
|
||||||
|
`mappend` TB.fromText ": "
|
||||||
|
`mappend` TB.fromText (TS.pack $ show level)
|
||||||
|
`mappend` TB.fromText "@("
|
||||||
|
`mappend` TB.fromText src
|
||||||
|
`mappend` TB.fromText ") "
|
||||||
|
`mappend` TB.fromText msg
|
||||||
|
|
||||||
defaultYesodRunner :: Yesod master
|
defaultYesodRunner :: Yesod master
|
||||||
=> a
|
=> a
|
||||||
-> master
|
-> master
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user