diff --git a/src/Tonatona/Servant.hs b/src/Tonatona/Servant.hs
--- a/src/Tonatona/Servant.hs
+++ b/src/Tonatona/Servant.hs
@@ -13,11 +13,13 @@
 
 import RIO
 
+import Data.Default (def)
 import Network.HTTP.Types.Header
 import Network.Wai (Middleware)
 import Network.Wai.Handler.Warp (Port)
 import qualified Network.Wai.Handler.Warp as Warp
-import Network.Wai.Middleware.RequestLogger (logStdout, logStdoutDev)
+import Network.Wai.Middleware.RequestLogger (OutputFormat(..), logStdout, logStdoutDev, mkRequestLogger, outputFormat)
+import Network.Wai.Middleware.RequestLogger.JSON (formatAsJSONWithHeaders)
 import Servant
 
 import TonaParser (Parser, (.||), argLong, envVar, optionalVal)
@@ -70,10 +72,21 @@
 reqLogMiddleware :: (HasConfig env TonaLogger.Config) => RIO env Middleware
 reqLogMiddleware = do
   TonaLogger.Config {mode, verbose} <- asks config
-  pure $
-    if TonaLogger.defaultVerbosity mode verbose
-      then logStdoutDev
-      else logStdout
+  case (mode, verbose) of
+    (TonaLogger.Development, TonaLogger.Verbose True) ->
+      liftIO mkLogStdoutVerbose
+    (TonaLogger.Development, TonaLogger.Verbose False) ->
+      pure logStdoutDev
+    (_, TonaLogger.Verbose True) ->
+      pure logStdoutDev
+    (_, TonaLogger.Verbose False) ->
+      pure logStdout
+
+mkLogStdoutVerbose :: IO Middleware
+mkLogStdoutVerbose = do
+  mkRequestLogger def
+    { outputFormat = CustomOutputFormatWithDetailsAndHeaders formatAsJSONWithHeaders
+    }
 
 -- Config
 
diff --git a/tonatona-servant.cabal b/tonatona-servant.cabal
--- a/tonatona-servant.cabal
+++ b/tonatona-servant.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: cb2a768e341fc75a377d92ed576aa4d2aef5f4f08ee1e8d590d8fecd96a0cc4e
+-- hash: 50ae8bb231964bca986a579c5dbf4ddce9ffd8844dac278043bf6e379ef5b63b
 
 name:           tonatona-servant
-version:        0.1.0.2
+version:        0.1.0.3
 synopsis:       tonatona plugin for servant.
 description:    Tonatona plugin for @servant@. This package provides a tonatona plugin for @servant@.
 category:       Library, Tonatona, Servant, Web
@@ -17,7 +19,6 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
     README.md
 
@@ -36,6 +37,7 @@
   ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
       base >=4.7 && <5
+    , data-default >=0.7
     , exceptions >=0.8
     , http-types >=0.12
     , monad-logger >=0.3
@@ -46,7 +48,7 @@
     , tonatona >=0.1
     , tonatona-logger >=0.1
     , wai >=3.2
-    , wai-extra >=3.0
+    , wai-extra >=3.0.27
     , warp >=3.2
   default-language: Haskell2010
 
@@ -60,6 +62,7 @@
   build-depends:
       Glob
     , base >=4.7 && <5
+    , data-default >=0.7
     , doctest
     , exceptions >=0.8
     , http-types >=0.12
@@ -71,7 +74,7 @@
     , tonatona >=0.1
     , tonatona-logger >=0.1
     , wai >=3.2
-    , wai-extra >=3.0
+    , wai-extra >=3.0.27
     , warp >=3.2
   default-language: Haskell2010
 
@@ -84,6 +87,7 @@
   ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
       base >=4.7 && <5
+    , data-default >=0.7
     , exceptions >=0.8
     , http-types >=0.12
     , monad-logger >=0.3
@@ -94,6 +98,6 @@
     , tonatona
     , tonatona-logger >=0.1
     , wai >=3.2
-    , wai-extra >=3.0
+    , wai-extra >=3.0.27
     , warp >=3.2
   default-language: Haskell2010
