module Blammo.Logging.Internal.Logger
  ( Logger (..)
  , HasLogger (..)
  ) where

import Prelude

import Blammo.Logging.LogSettings
import Blammo.Logging.Test hiding (getLoggedMessages)
import Control.Lens (Lens')
import Control.Monad.Logger.Aeson
import Data.ByteString (ByteString)
import System.Log.FastLogger (LoggerSet)

data Logger = Logger
  { Logger -> LogSettings
lLogSettings :: LogSettings
  , Logger -> LoggerSet
lLoggerSet :: LoggerSet
  , Logger -> LogLevel -> ByteString -> ByteString
lReformat :: LogLevel -> ByteString -> ByteString
  , Logger -> LogSource -> LogLevel -> Bool
lShouldLog :: LogSource -> LogLevel -> Bool
  , Logger -> Bool
lShouldColor :: Bool
  , Logger -> Maybe LoggedMessages
lLoggedMessages :: Maybe LoggedMessages
  }

class HasLogger env where
  loggerL :: Lens' env Logger

instance HasLogger Logger where
  loggerL :: Lens' Logger Logger
loggerL = (Logger -> f Logger) -> Logger -> f Logger
forall a. a -> a
id