{-# LANGUAGE UndecidableInstances #-}
module Control.Eff.LogWriter.Capture
( captureLogWriter
, CaptureLogs
, CaptureLogWriter
, runCaptureLogWriter
)
where
import Control.Eff as Eff
import Control.Eff.Log
import Control.Eff.Writer.Strict ( Writer
, tell
, runListWriter
)
captureLogWriter :: LogWriter CaptureLogWriter
captureLogWriter = MkLogWriter (MkCaptureLogs . tell)
type CaptureLogs a = LogWriterM CaptureLogWriter a
runCaptureLogWriter
:: Eff (CaptureLogWriter ': e) a -> Eff e (a, [LogMessage])
runCaptureLogWriter = runListWriter
type CaptureLogWriter = Writer LogMessage