hw-uri-0.1.1.5: app/App/Aws/Logger.hs
{-# LANGUAGE OverloadedStrings #-}
module App.Aws.Logger
( awsLogger
) where
import Antiope.Env (LogLevel (..))
import App.Show
import Control.Concurrent (myThreadId)
import Control.Monad
import Data.Semigroup ((<>))
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Lazy.Char8 as LC8
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO as TIO
import qualified System.IO as IO
awsLogger :: Maybe LogLevel -> LogLevel -> LC8.ByteString -> IO ()
awsLogger maybeConfigLogLevel msgLogLevel message =
forM_ maybeConfigLogLevel $ \configLogLevel ->
when (msgLogLevel <= configLogLevel) $ do
threadId <- myThreadId
TIO.hPutStrLn IO.stderr $ "[" <> tshow msgLogLevel <> "] [tid: " <> tshow threadId <> "]" <> text
where text = T.decodeUtf8 $ LBS.toStrict message