packages feed

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