packages feed

natskell-0.0.0.1: internal/Lib/LoggerAPI.hs

{-# LANGUAGE RankNTypes #-}

module Lib.LoggerAPI
  ( LoggerAPI (..)
  ) where

import           Control.Concurrent.STM (TVar)
import           Lib.Logger.Types

-- | Thin API wrapper for logger capabilities.
data LoggerAPI = LoggerAPI
                   { runWithLogger :: forall a. LoggerConfig -> TVar LogContext -> AppM a -> IO a
                   , updateLogContext :: TVar LogContext -> (LogContext -> LogContext) -> IO ()
                   , logMessage :: LogLevel -> String -> AppM ()
                   }