katip-rollbar 0.2.0.0 → 0.3.0.0
raw patch · 2 files changed
+11/−27 lines, 2 files
Files
- katip-rollbar.cabal +2/−2
- src/Katip/Scribes/Rollbar.hs +9/−25
katip-rollbar.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: db432a9dd33cf06f56b98b41c89dc117a89b969e581b082f0619dd16b716a941+-- hash: a493aa087b8743c3c495d0201c9a4a7ea6b7ee372660f60b38801435694ec71d name: katip-rollbar-version: 0.2.0.0+version: 0.3.0.0 synopsis: Katip scribe that logs to Rollbar category: Logging homepage: https://github.com/joneshf/katip-rollbar#readme
src/Katip/Scribes/Rollbar.hs view
@@ -6,11 +6,12 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-} -module Katip.Scribes.Rollbar where+module Katip.Scribes.Rollbar+ ( mkRollbarScribe+ ) where import Prelude hiding (error) -import "base" Control.Concurrent.MVar (MVar, newEmptyMVar, putMVar, takeMVar) import "base" Control.Monad (replicateM, when) import "base" Data.Foldable (for_) import "base" Data.Functor (void)@@ -70,10 +71,10 @@ import qualified "katip" Katip queueSize :: Int-queueSize = 10+queueSize = 4096 workerSize :: Int-workerSize = 3+workerSize = 10 mkRollbarScribe :: RemoveHeaders headers =>@@ -81,20 +82,19 @@ AccessToken -> Maybe Branch -> Maybe CodeVersion ->- Manager ->+ Manager -> -- ^ Must support TLS Severity -> Verbosity -> IO Scribe mkRollbarScribe proxy accessToken branch codeVersion manager severity verbosity = do queue <- newTBMQueueIO queueSize- finalize <- newEmptyMVar- setupWorkers proxy queue finalize manager+ workers <- replicateM workerSize (async $ mkWorker proxy manager queue) let liPush item = when (permitItem severity item) $ atomically (writeTBMQueue queue $ rollbarItem' item) rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item scribeFinalizer = do- putMVar finalize ()- takeMVar finalize+ atomically (closeTBMQueue queue)+ for_ workers waitCatch pure Scribe { liPush, scribeFinalizer } rollbarItem ::@@ -138,22 +138,6 @@ timestamp = _itemTime item value :: Value value = itemJson verbosity item---- | Setup the workers and wait until the finalizer is evaluated.--- Then, close the queueu, wait for the workers and continue finalization.-setupWorkers ::- RemoveHeaders headers =>- proxy headers ->- TBMQueue (Item Value ("Authorization" ': headers)) ->- MVar () ->- Manager ->- IO ()-setupWorkers proxy queue finalize manager = void $ async $ do- workers <- replicateM workerSize (async $ mkWorker proxy manager queue)- takeMVar finalize- atomically (closeTBMQueue queue)- for_ workers waitCatch- putMVar finalize () mkWorker :: (RemoveHeaders headers) =>