{- |
Module                  : Colog.Core
Copyright               : (c) 2018-2020 Kowainik, 2021-2024 Co-Log
SPDX-License-Identifier : MPL-2.0
Maintainer              : Co-Log <xrom.xkov@gmail.com>
Stability               : Stable
Portability             : Portable

Exports all core functionality. @co-log-core@ is a lightweight package that
defines only core data type and various combinators to work with it.

Fundamentals of @co-log-core@ are based on the following data type:

@
__newtype__ LogAction m msg = LogAction
    { unLogAction :: msg -> m ()
    }
@

This data type provides extremely composable and flexible interface by having
many instances of the standard algebraic data types.

The package has the following structure:

* __"Colog.Core.Action":__ definition of the main data type and its combinators.
* __"Colog.Core.Class":__ 'HasLog' typeclass that describes how different values
  (e.g. application environment) can store and modify 'LogAction'.
* __"Colog.Core.IO":__ basic loggers that work with 'Control.Monad.IO.Class.MonadIO' and 'String'.
* __"Colog.Core.Severity":__ logger severity.
-}

module Colog.Core
       ( module Colog.Core.Action
       , module Colog.Core.Class
       , module Colog.Core.IO
       , module Colog.Core.Severity
       ) where

import Colog.Core.Action
import Colog.Core.Class
import Colog.Core.IO
import Colog.Core.Severity