metrics 0.2.0.0 → 0.2.1.0
raw patch · 2 files changed
+27/−13 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Metrics.Reporter.StdOut: dumpMetrics :: MetricRegistry IO -> IO [(Text, String)]
+ Data.Metrics.Reporter.StdOut: reportMetrics :: MetricRegistry IO -> IO ()
Files
- metrics.cabal +1/−1
- src/Data/Metrics/Reporter/StdOut.hs +26/−12
metrics.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: metrics-version: 0.2.0.0+version: 0.2.1.0 synopsis: High-performance application metric tracking description: A port of Coda Hale's excellent metrics library for the JVM
src/Data/Metrics/Reporter/StdOut.hs view
@@ -4,27 +4,41 @@ -- For more meaningful access to statistics, metrics should be sent to something like Librato or Graphite. module Data.Metrics.Reporter.StdOut ( printHealthCheck,- printHealthChecks+ printHealthChecks,+ reportMetrics,+ dumpMetrics ) where+import Control.Applicative+import Control.Concurrent.MVar import qualified Data.HashMap.Strict as H import Data.HealthCheck-import Data.Metrics.Internal-import Data.Metrics.Types+import Data.Metrics 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)+prettyPrintMetric (m, v) = T.putStr m >> T.putStr ": " >> putStrLn v ---reportMetrics :: MetricRegistry -> IO ()---reportMetrics m = dumpMetrics m >>= mapM_ prettyPrintMetric+reportMetrics :: MetricRegistry IO -> 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 []+dumpMetrics :: MetricRegistry IO -> IO [(T.Text, String)]+dumpMetrics r = do+ ms <- readMVar $ metrics r+ let readRep (k, metricVariety) = do+ display <- case metricVariety of+ (MetricGauge g) -> show <$> value g+ (MetricCounter c) -> show <$> value c+ (MetricHistogram h) -> return ""+ (MetricMeter m) -> do+ one <- (\x -> "\t" ++ show x ++ "/minute\n") <$> oneMinuteRate m+ five <- (\x -> "\t" ++ show x ++ "/5 minutes\n") <$> fiveMinuteRate m+ fifteen <- (\x -> "\t" ++ show x ++ "/15 minutes\n") <$> fifteenMinuteRate m+ return ("\n" ++ one ++ five ++ fifteen)+ (MetricTimer t) -> (\x -> show x ++ " s") <$> mean t+ return (k, display)+ mapM readRep $ H.toList ms+ fg = SetColor Foreground Vivid -- | Pretty-print a single HealthCheck to the console using ANSI colors.