Consider the simplest scotty app:
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Data.Monoid (mconcat)
main = scotty 3000 $ do
    get "/:word" $ do
        beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]
I put this code into app.hs and compile it with GHC. I run it with ./app. Simple.
- What really happens when people visit the site? It's only one - ./appthat's running. Does a new thread get created within this same app whenever each user triggers a- get "/:word" $ doline? How many such threads can exist? Thousand? Ten thousand?
- After running - ./appit shows the message- Setting phasers to stun... (port 3000) (ctrl-c to quit). But it shows nothing more. It doesn't output the incoming web requests. How can I make it do that? This would be useful for logging purposes.
 
                        
Assuming you are using GHC, each request to the scotty server essentially creates a "green thread" that is scheduled by the GHC runtime. You can easily have thousands of those running at a time.
Scotty itself doesn't do any request logging but since it is built on top of WAI, you can use any middleware component that exists for it, for example
RequestLogger.