{-# LANGUAGE OverloadedStrings #-}
module Database.CQL.IO.Tinylog (mkLogger) where
import Data.ByteString.Builder
import Data.ByteString.Lazy (ByteString)
import Database.CQL.IO (Logger (..), LogLevel (..))
import Database.CQL.IO.Hexdump
import qualified Data.ByteString.Lazy as L
import qualified System.Logger as Tiny
mkLogger :: Tiny.Logger -> Logger
mkLogger l = Logger
{ logMessage = tinylogMessage l
, logRequest = tinylogRequest l
, logResponse = tinylogResponse l
}
tinylogMessage :: Tiny.Logger -> LogLevel -> Builder -> IO ()
tinylogMessage l lvl msg = Tiny.log l (level lvl) $
Tiny.msg (toLazyByteString msg)
where
level :: LogLevel -> Tiny.Level
level LogDebug = Tiny.Debug
level LogInfo = Tiny.Info
level LogWarn = Tiny.Warn
level LogError = Tiny.Error
tinylogRequest :: Tiny.Logger -> ByteString -> IO ()
tinylogRequest l req = Tiny.log l Tiny.Trace $
Tiny.msg (hexdump (L.take 160 req))
tinylogResponse :: Tiny.Logger -> ByteString -> IO ()
tinylogResponse l rsp = Tiny.log l Tiny.Trace $
Tiny.msg (hexdump (L.take 160 rsp))