@hackage Blammo-wai0.0.0.3
Using Blammo with WAI
Categories
License
MIT
Maintainer
Freckle Education
Links
Versions
Installation
Dependencies (11)
- Blammo >=2.1.4.1
- aeson >=1.5.2.0
- base >=4.13.0.0 && <5
- bytestring >=0.10.10.1
- case-insensitive >=1.2.1.0
- clock >=0.8 Show all…
Dependents (1)
@hackage/freckle-app
Blammo-wai
Integration of Blammo with wai.
-- Blammo
import Blammo.Logging.Simple
-- wai
import Network.Wai (Middleware)
-- Blammo-wai
import Network.Wai.Middleware.Logging
-- warp
import qualified Network.Wai.Handler.Warp as Warp
-- yesod
import Yesod.Core (Yesod)
import qualified Yesod.Core as Yesod
data App = App
{ appLogger :: Logger
-- etc.
}
instance HasLogger App where
loggerL = lens appLogger $ \x y -> x {appLogger = y}
Integration with WAI
waiMiddleware :: App -> Middleware
waiMiddleware app =
addThreadContext ["app" .= ("my-app" :: Text)]
. requestLogger app
. Yesod.defaultMiddlewaresNoLogging
Integration with Warp
warpSettings :: App -> Warp.Settings
warpSettings app = Warp.setOnException onEx $ Warp.defaultSettings
where
onEx _req ex =
when (Warp.defaultShouldDisplayException ex)
$ runWithLogger app
$ logError
$ "Warp exception" :# ["exception" .= displayException ex]
Integration with Yesod
instance Yesod App where
messageLoggerSource app _logger loc source level msg =
runWithLogger app $ monadLoggerLog loc source level msg