Add request logging

This commit is contained in:
Paul Brinkmeier
2025-08-20 19:04:13 +02:00
parent c7da029c7e
commit b264b50b01
3 changed files with 34 additions and 3 deletions
+14 -3
View File
@@ -11,7 +11,7 @@ import Data.Pool (Pool, defaultPoolConfig, newPool, withResource)
import Data.Proxy (Proxy (..))
import Data.Time (Day, toGregorian)
import Network.HTTP.Media ((//), (/:))
import Network.HTTP.Types (status200)
import Network.HTTP.Types (Status (..), status200)
import Servant
( Accept (..)
, Capture
@@ -32,7 +32,7 @@ import Text.Printf (printf)
import qualified Data.ByteString.Char8 as BS8
import qualified Data.Text as Text
import qualified Database.PostgreSQL.Opium as Opium
import Network.Wai (responseFile)
import Network.Wai (Request (..), responseFile)
import qualified Network.Wai.Handler.Warp as Warp
import qualified Text.Blaze.Html5 as H
import qualified Text.Blaze.Html5.Attributes as A
@@ -41,6 +41,7 @@ import Yore.DB (DayFile (..))
import Yore.Time (addYears, getCurrentDay, getSecondsUntilMidnight)
import qualified Yore.DB as DB
import qualified Yore.Log as Log
instance Exception Opium.ConnectionError
@@ -55,10 +56,20 @@ main = do
Opium.close
10
maxResources
Warp.run 3000 $ serve (Proxy :: Proxy API) $ server connPool
Warp.runSettings settings $ serve (Proxy :: Proxy API) $ server connPool
where
unsafeConnect s = either throwIO pure =<< Opium.connect s
settings = Warp.setLogger logger Warp.defaultSettings
logger req status _ = do
Log.info $
printf
"%d %s %s"
(statusCode status)
(BS8.unpack $ requestMethod req)
(BS8.unpack $ rawPathInfo req <> rawQueryString req)
type API =
Get '[HTML] RootModel
:<|> "today" :> "issue" :> Capture "issue" Int :> Get '[HTML] RootModel