snaplet-hslogger provides a convenience interface to the Haskell
HSLogger package.
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
module Main where
------------------------------------------------------------------------------
import Control.Applicative
import Control.Lens
import System.Log
import Snap
import Snap.Snaplet.Log
import Text.Email.Validate
------------------------------------------------------------------------------
data App = App
{ _logger :: Snaplet ()
}
makeLenses ''App
------------------------------------------------------------------------------
-- | The application's routes.
routes :: [(ByteString, Handler App App ())]
routes = [ ("/" , writeText "hello")
, ("/foo" , fooHandler)
]
fooHandler :: Handler App App ()
fooHandler = do
log DEBUG "Message"
getResponse >>= finishWith
------------------------------------------------------------------------------
-- | The application initializer.
app :: SnapletInit App App
app = makeSnaplet "app" "An snaplet example application." Nothing $ do
m <- nestSnaplet "hslogger" logger $ initLogger
addRoutes routes
return $ App m
main :: IO ()
main = serveSnaplet defaultConfig app