-- | This helps to setup logging to /standard ouput/. module Control.Eff.LogWriter.Console ( withConsoleLogWriter , withConsoleLogging , consoleLogWriter ) where import Control.Eff as Eff import Control.Eff.Log import Control.Eff.LogWriter.Rich import Data.Text -- | Enable logging to @standard output@ using the 'consoleLogWriter', with some 'LogMessage' fields preset -- as in 'withRichLogging'. -- -- Log messages are rendered using 'renderLogMessageConsoleLog'. -- -- Example: -- -- > exampleWithConsoleLogging :: IO () -- > exampleWithConsoleLogging = -- > runLift -- > $ withConsoleLogging "my-app" local7 allLogMessages -- > $ logInfo "Oh, hi there" -- -- To vary the 'LogWriter' use 'withRichLogging'. withConsoleLogging :: Lifted IO e => Text -- ^ The default application name to put into the 'lmAppName' field. -> Facility -- ^ The default RFC-5424 facility to put into the 'lmFacility' field. -> LogPredicate -- ^ The inital predicate for log messages, there are some pre-defined in "Control.Eff.Log.Message#PredefinedPredicates" -> Eff (Logs : LogWriterReader : e) a -> Eff e a withConsoleLogging a b c d = do lw <- lift consoleLogWriter withRichLogging lw a b c d -- | Enable logging to @standard output@ using the 'consoleLogWriter'. -- -- Log messages are rendered using 'renderLogMessageConsoleLog'. -- -- Example: -- -- > exampleWithConsoleLogWriter :: IO () -- > exampleWithConsoleLogWriter = -- > runLift -- > $ withoutLogging @IO -- > $ withConsoleLogWriter -- > $ logInfo "Oh, hi there" withConsoleLogWriter :: (IoLogging e) => Eff e a -> Eff e a withConsoleLogWriter e = do lw <- lift consoleLogWriter addLogWriter lw e -- | Render a 'LogMessage' to 'IO.stdout' using 'renderLogMessageConsoleLog'. -- -- See 'stdoutLogWriter'. -- -- @since 0.31.0 consoleLogWriter :: IO LogWriter consoleLogWriter = stdoutLogWriter renderLogMessageConsoleLog