packages feed

logging-effect-extra-file-2.0.0: executable/log-file.hs

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

module Main (main) where

import Control.Monad.Log (MonadLog)
import qualified Control.Monad.Log as Log
import Control.Monad.Log.Extra.File (WithFile)
import qualified Control.Monad.Log.Extra.File as Log
import qualified System.IO as IO
import Data.Text.Prettyprint.Doc (Doc)

app :: MonadLog (WithFile (Doc ann)) m => m ()
app = do
  $(Log.logMessageTH) "GAH! All systems are down!!!"
  $(Log.logMessageTH) "Red alert!"
  $(Log.logMessageTH) "Critical hit!"
  $(Log.logMessageTH) "Errors abound!"
  $(Log.logMessageTH) "Cargo number 2331 has commandeered the vessel"
  $(Log.logMessageTH) "Heads up, but it's no biggie."
  $(Log.logMessageTH) "Does anyone read these?"
  $(Log.logMessageTH) "Sleuthing with log messages..."

main :: IO ()
main = Log.withFDHandler Log.defaultBatchingOptions IO.stdout 0.4 80 $ \stdoutHandler ->
  Log.runLoggingT app (stdoutHandler . Log.renderWithFile id)