{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module Network.Monitoring.Riemann.LoggingClient where

import Control.Monad.IO.Class (MonadIO, liftIO)
import Network.Monitoring.Riemann.Client (Client, close, sendEvent)

data LoggingClient =
  LoggingClient

{-|
    A new LoggingClient

    The LoggingClient is a 'Client' that will simply print events
-}
loggingClient :: LoggingClient
loggingClient = LoggingClient

instance MonadIO m => Client m LoggingClient where
  sendEvent _ = liftIO . print
  close _ = liftIO $ print "close"