polysemy-log-co-0.2.2.1: test/Polysemy/Log/Colog/Test/ExampleTest.hs
module Polysemy.Log.Colog.Test.ExampleTest where
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