{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}

-- | Provides the types for logging.
module Navi.Data.NaviLog
  ( LogEnv (..),
  )
where

import Navi.Prelude

-- | Holds logging env data.
--
-- @since 0.1
data LogEnv = MkLogEnv
  { -- | Handle for file logging.
    --
    -- @since 0.1
    LogEnv -> Maybe Handle
logHandle :: Maybe Handle,
    -- | Level in which to log.
    --
    -- @since 0.1
    LogEnv -> LogLevel
logLevel :: LogLevel,
    -- | The current logging namespace.
    --
    -- @since 0.1
    LogEnv -> Namespace
logNamespace :: Namespace,
    -- | Log queue.
    --
    -- @since 0.1
    LogEnv -> TBQueue LogStr
logQueue :: TBQueue LogStr
  }

-- | @since 0.1
makeFieldLabelsNoPrefix ''LogEnv