Composable Contravariant Comonadic Logging Library.
This package provides core types and functions to work with the LogAction
data type which is both simple and powerful.
newtype
LogAction m msg = LogAction
{ unLogAction :: msg -> m ()
}
The ideas behind this package are described in the following blog post:
See the following packages for different implementations based on co-log-core
:
co-log: taggless final implementations.
co-log-polysemy: extensible effects implementation based on
polysemy
.
co-log-core
co-log-core
is a lightweight package that provides core types and functions to work with the @LogAction@ data type which is both simple and powerful.
How to use
co-log-core
is compatible with the following GHC versions - supported versions
In order to start using co-log-core
in your project, you will need to set it up with these steps:
Add the dependency on
co-log-core
in your project's.cabal
file. For this, you should modify thebuild-depends
section according to the below section:build-depends: base ^>= LATEST_SUPPORTED_BASE , co-log-core ^>= LATEST_VERSION
To use this package, refer to the below example.
module Main (main) where import Prelude hiding (log) import Colog.Core (LogAction, logStringStdout, (<&)) app :: LogAction IO String -> IO () app log = do log <& "Starting app..." log <& "Finishing app..." main :: IO () main = app logStringStdout