packages feed

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 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.