@@ -3,6 +3,7 @@
3{-# LANGUAGE NamedFieldPuns #-}
3{-# LANGUAGE NamedFieldPuns #-}
4{-# LANGUAGE OverloadedStrings #-}
4{-# LANGUAGE OverloadedStrings #-}
5{-# LANGUAGE PackageImports #-}
5{-# LANGUAGE PackageImports #-}
6+{-# LANGUAGE RankNTypes #-}
6{-# LANGUAGE ScopedTypeVariables #-}
7{-# LANGUAGE ScopedTypeVariables #-}
7{-# LANGUAGE TypeOperators #-}
8{-# LANGUAGE TypeOperators #-}
@@ -12,10 +13,10 @@ module Katip.Scribes.Rollbar
13import Prelude hiding (error)
14import Prelude hiding (error)
15−import "base" Control.Monad (replicateM, when)
16+import "base" Control.Monad (replicateM, when)
16−import "base" Data.Foldable (for_)
17+import "base" Data.Foldable (for_)
17−import "base" Data.Functor (void)
18+import "base" Data.Functor (void)
18−import "base" GHC.Conc (atomically)
19+import "base" GHC.Conc (atomically)
20import "async" Control.Concurrent.Async (async, waitCatch)
21import "async" Control.Concurrent.Async (async, waitCatch)
21import "stm-chans" Control.Concurrent.STM.TBMQueue
22import "stm-chans" Control.Concurrent.STM.TBMQueue
@@ -31,8 +32,8 @@ import "text" Data.Text.Lazy.Builder (toLazyText)
31import "time" Data.Time.Clock (UTCTime)
32import "time" Data.Time.Clock (UTCTime)
32import "katip" Katip
33import "katip" Katip
34− , Scribe(Scribe, liPush, scribeFinalizer)
35+ , Scribe(..)
35− , Severity(DebugS, ErrorS, InfoS, NoticeS, WarningS)
36+ , Severity(..)
36 , Verbosity
37 , Verbosity
37 , getEnvironment
38 , getEnvironment
38 , itemJson
39 , itemJson
@@ -44,6 +45,7 @@ import "katip" Katip
44 , _itemSeverity
45 , _itemSeverity
45 , _itemTime
46 , _itemTime
48+import "katip" Katip.Core (PermitFunc)
47import "hostname" Network.HostName (HostName)
49import "hostname" Network.HostName (HostName)
48import "http-client" Network.HTTP.Client (Manager)
50import "http-client" Network.HTTP.Client (Manager)
49import "rollbar-hs" Rollbar.AccessToken (AccessToken)
51import "rollbar-hs" Rollbar.AccessToken (AccessToken)
@@ -83,19 +85,19 @@ mkRollbarScribe
83 -> Maybe Branch
85 -> Maybe Branch
84 -> Maybe CodeVersion
86 -> Maybe CodeVersion
85 -> Manager -- ^ Must support TLS
87 -> Manager -- ^ Must support TLS
86− -> Severity
88+ -> PermitFunc
87 -> Verbosity
89 -> Verbosity
88 -> IO Scribe
90 -> IO Scribe
89−mkRollbarScribe proxy accessToken branch codeVersion manager severity verbosity = do
91+mkRollbarScribe proxy accessToken branch codeVersion manager scribePermitItem verbosity = do
90 queue <- newTBMQueueIO queueSize
92 queue <- newTBMQueueIO queueSize
91 workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
93 workers <- replicateM workerSize (async $ mkWorker proxy manager queue)
92− let liPush item = when (permitItem severity item) $
94+ let liPush item =
93 atomically (writeTBMQueue queue $ rollbarItem' item)
95 atomically (writeTBMQueue queue $ rollbarItem' item)
94 rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item
96 rollbarItem' item = rollbarItem proxy accessToken branch codeVersion verbosity item
95 scribeFinalizer = do
97 scribeFinalizer = do
96 atomically (closeTBMQueue queue)
98 atomically (closeTBMQueue queue)
97 for_ workers waitCatch
99 for_ workers waitCatch
98− pure Scribe { liPush, scribeFinalizer }
100+ pure Scribe { liPush, scribeFinalizer, scribePermitItem }
100rollbarItem ::
102rollbarItem ::
101 (LogItem a, RemoveHeaders headers) =>
103 (LogItem a, RemoveHeaders headers) =>