> Log thrice, debug once. > > –– Г. Любенов # About A common interface for the polysemy logging backend adapters. An example program using [co-log], for the simple logger with predefined formatting and a custom data type: ```haskell import Colog (logTextStdout) import Colog.Polysemy (runLogAction) import Polysemy (runM) import Polysemy.Log.Colog (interpretDataLogColog, interpretLogStdout) import qualified Polysemy.Log.Data.DataLog as DataLog import Polysemy.Log.Data.DataLog (DataLog) import qualified Polysemy.Log.Data.Log as Log import Polysemy.Log.Data.Log (Log) progSimple :: Member Log r => Sem r () progSimple = do Log.debug "debug" Log.warn "warn" data Message = Message { severity :: Text, message :: Text } deriving (Eq, Show) progData :: Member (DataLog Message) r => Sem r () progData = do DataLog.dataLog (Message "warn" "warning!") DataLog.local (\ msg@Message{message} -> msg {message = "context: " <> message}) do DataLog.dataLog (Message "error" "segfault!") main :: IO () main = runM do interpretLogStdout progSimple runLogAction @IO (contramap message logTextStdout) $ interpretDataLogColog @Message $ progData ``` For more documentation, please consult Hackage: * [polysemy-log](https://hackage.haskell.org/package/polysemy-log) * [polysemy-log-co](https://hackage.haskell.org/package/polysemy-log-co) * [polysemy-log-di](https://hackage.haskell.org/package/polysemy-log-di) # Building the Project The build is defined in [nix], supporting `flake` and legacy `nix-build`. With `nix-build`: ```bash nix-build -A defaultPackage nix-build -A packages.x86_64-linux.polysemy-log-co ``` With `nix flake`: ``` nix build nix build '.#polysemy-log-co' ``` To run all tests: ```bash nix flake check ``` [nix]: https://nixos.org/manual/nix/unstable [co-log]: https://hackage.haskell.org/package/co-log