commit
ea8677d96b
@ -44,13 +44,16 @@ import Text.Julius
|
|||||||
import Yesod.Form
|
import Yesod.Form
|
||||||
import Yesod.Json
|
import Yesod.Json
|
||||||
import Yesod.Persist
|
import Yesod.Persist
|
||||||
|
import Network.HTTP.Types (status200)
|
||||||
import Network.Wai (Application)
|
import Network.Wai (Application)
|
||||||
import Network.Wai.Middleware.RequestLogger
|
import Control.Monad.IO.Class (liftIO, MonadIO(..))
|
||||||
import Control.Monad.IO.Class (liftIO)
|
|
||||||
import Control.Monad.Trans.Control (MonadBaseControl)
|
import Control.Monad.Trans.Control (MonadBaseControl)
|
||||||
|
|
||||||
|
import Network.Wai
|
||||||
|
import Network.Wai.Logger
|
||||||
import Network.Wai.Handler.Warp (run)
|
import Network.Wai.Handler.Warp (run)
|
||||||
import System.IO (stderr, hPutStrLn)
|
import System.IO (stderr, stdout, hFlush, hPutStrLn)
|
||||||
|
import System.Log.FastLogger
|
||||||
import Text.Blaze (toHtml)
|
import Text.Blaze (toHtml)
|
||||||
|
|
||||||
showIntegral :: Integral a => a -> String
|
showIntegral :: Integral a => a -> String
|
||||||
@ -70,9 +73,26 @@ warp port a = toWaiApp a >>= run port
|
|||||||
-- | Same as 'warp', but also sends a message to stdout for each request, and
|
-- | Same as 'warp', but also sends a message to stdout for each request, and
|
||||||
-- an \"application launched\" message as well. Can be useful for development.
|
-- an \"application launched\" message as well. Can be useful for development.
|
||||||
warpDebug :: (Yesod a, YesodDispatch a a) => Int -> a -> IO ()
|
warpDebug :: (Yesod a, YesodDispatch a a) => Int -> a -> IO ()
|
||||||
warpDebug port a = do
|
warpDebug port app = do
|
||||||
hPutStrLn stderr $ "Application launched, listening on port " ++ show port
|
hPutStrLn stderr $ "Application launched, listening on port " ++ show port
|
||||||
toWaiApp a >>= run port . logStdout
|
waiApp <- toWaiApp app
|
||||||
|
dateRef <- dateInit
|
||||||
|
run port $ (logStdout dateRef) waiApp
|
||||||
|
|
||||||
|
logStdout :: DateRef -> Middleware
|
||||||
|
logStdout dateRef waiApp =
|
||||||
|
\req -> do
|
||||||
|
logRequest dateRef req
|
||||||
|
waiApp req
|
||||||
|
|
||||||
|
logRequest :: Control.Monad.IO.Class.MonadIO m =>
|
||||||
|
DateRef -> Network.Wai.Request -> m ()
|
||||||
|
logRequest dateRef req = do
|
||||||
|
date <- liftIO $ getDate dateRef
|
||||||
|
let status = status200
|
||||||
|
len = 4
|
||||||
|
liftIO $ hPutLogStr stdout $ apacheFormat FromSocket date req status (Just len)
|
||||||
|
liftIO $ hFlush stdout
|
||||||
|
|
||||||
-- | Run a development server, where your code changes are automatically
|
-- | Run a development server, where your code changes are automatically
|
||||||
-- reloaded.
|
-- reloaded.
|
||||||
|
|||||||
@ -80,6 +80,7 @@ library
|
|||||||
, transformers >= 0.2.2 && < 0.3
|
, transformers >= 0.2.2 && < 0.3
|
||||||
, wai >= 1.0 && < 1.1
|
, wai >= 1.0 && < 1.1
|
||||||
, wai-extra >= 1.0 && < 1.1
|
, wai-extra >= 1.0 && < 1.1
|
||||||
|
, wai-logger >= 0.1.2
|
||||||
, hamlet >= 0.10 && < 0.11
|
, hamlet >= 0.10 && < 0.11
|
||||||
, shakespeare-js >= 0.10 && < 0.11
|
, shakespeare-js >= 0.10 && < 0.11
|
||||||
, shakespeare-css >= 0.10 && < 0.11
|
, shakespeare-css >= 0.10 && < 0.11
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user