metrics-0.3.0.0: src/Data/Metrics/Reporter/StdOut.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Logging to stdout is primarily intended for development purposes or creating command line status tools.
--
-- For more meaningful access to statistics, metrics should be sent to something like Librato or Graphite.
module Data.Metrics.Reporter.StdOut (
printHealthCheck,
printHealthChecks
) where
import qualified Data.HashMap.Strict as H
import Data.HealthCheck
import Data.Metrics.Internal
import Data.Metrics.Types
import qualified Data.Text as T
import qualified Data.Text.IO as T
import System.Console.ANSI
--prettyPrintMetric (m, v) = T.putStr m >> T.putStr ": " >> putStrLn (show v)
--reportMetrics :: MetricRegistry -> IO ()
--reportMetrics m = dumpMetrics m >>= mapM_ prettyPrintMetric
--dumpMetrics :: MetricRegistry -> IO [(T.Text, Double)]
--dumpMetrics r = do
-- ms <- readMVar $ metrics r
-- -- let readRep (k, (repAction, _)) = repAction >>= \rep -> return (k, rep)
-- -- mapM readRep $ H.toList ms
-- return []
fg = SetColor Foreground Vivid
-- | Pretty-print a single HealthCheck to the console using ANSI colors.
printHealthCheck :: HealthCheck -> IO ()
printHealthCheck (HealthCheck m name) = do
s <- m
setSGR $ case status s of
Good -> [fg Green]
Bad -> [fg Red]
Ugly -> [fg Yellow]
Unknown -> [fg Cyan]
T.putStr "● "
setSGR [Reset]
T.putStr name
maybe (T.putStr "\n") (\msg -> T.putStr ": " >> T.putStrLn msg) $ statusMessage s
-- | Pretty-print a list of HealthChecks to the console using ANSI colors.
printHealthChecks :: HealthChecks -> IO ()
printHealthChecks = mapM_ printHealthCheck