@@ -1,10 +1,7 @@
1−{-# LANGUAGE CPP #-}
1+
22module Control.Logger
33 ( Logger
44 , loggerContext
5− , scrubber
6− , censor
7− , censorWith
85 , logMsg
96 , logMsgWith
107 , logInfo
@@ -35,27 +32,20 @@ module Control.Logger
3532 , compactCallStack
3633 , st
3734 , ToObject(..)
38− , withScrubber
39− , censoringWith
40− , censoring
4135 ) where
4236
4337import Control.Has
44−import Control.Lens hiding (censoring)
4538import Control.Logger.Internal
46−import Control.Logger.Orphans ()
47−import Control.Monad
39+import Control.Logger.Orphans ()
4840import Control.Monad.Catch
49−import Control.Monad.IO.Class
50−import qualified Data.List as List
51−import Data.Monoid
52−import Data.Text (Text)
53−import qualified Data.Text as Text
41+import qualified Data.List as List
42+import Data.Text (Text)
43+import qualified Data.Text as Text
5444import Data.Time
5545import GHC.Stack
56−import Katip (ToObject (..))
46+import Katip (ToObject(..))
5747import System.Log.FastLogger
58−import Text.Shakespeare.Text (st)
48+import Text.Shakespeare.Text (st)
5949
6050logError
6151 :: (LoggingMonad r m)
@@ -109,50 +99,6 @@ logErrorWith
10999 -> m ()
110100logErrorWith logger msg = withFrozenCallStack (logMsgWith logger Error msg)
111101
112−safeReplace :: Text -> Text -> Text -> Text
113−safeReplace what with where_
114− | Text.null what = where_
115− | otherwise = Text.replace what with where_
116−
117−-- | Add a some text to scrubber
118−censorWith :: Text -> Text -> Logger -> Logger
119−censorWith replacement needle l =
120− l & scrubber <>~ Endo (safeReplace needle replacement)
121−
122−-- | Censor with "***"
123−censor :: Text -> Logger -> Logger
124−censor = censorWith "***"
125−
126−-- | Run an action with adjusted scrubber
127−withScrubber
128− :: forall r m a. (Has Logger r, MonadReader r m)
129− => (Endo Text -> Endo Text)
130− -> m a
131− -> m a
132−withScrubber scrubF = local expandScrubber
133− where
134− expandScrubber :: r -> r
135− expandScrubber = over part (over scrubber scrubF)
136−
137−-- | Run an action while censoring additional text from logs
138−censoringWith
139− :: (Has Logger r, MonadReader r m)
140− => Text
141− -> Text
142− -> m a
143− -> m a
144−censoringWith replacement txt = withScrubber (<> censored)
145− where
146− censored = Endo (safeReplace txt replacement)
147−
148−-- | Run an action while censoring additional text from logs
149−censoring
150− :: (Has Logger r, MonadReader r m)
151− => Text
152− -> m a
153− -> m a
154−censoring = censoringWith "***"
155−
156102-- | Log exceptions occured in computation and just ignore them.
157103tryLogError
158104 :: (MonadIO m, MonadCatch m, Has Logger r, MonadReader r m)
@@ -203,14 +149,14 @@ fileLogger :: MonadIO m => FilePath -> m Logger
203149fileLogger fp = fastFunc <$> liftIO (newFileLoggerSet defaultBufSize fp)
204150
205151silentLogger :: Logger
206−silentLogger = Logger mempty mempty (\_ _ _ _ -> return ())
152+silentLogger = Logger mempty (\_ _ _ _ -> return ())
207153
208154-- | Logger which flushes buffer after each message. This is useful with
209155-- stderrLogger.
210156flushingFastFunc
211157 :: LogSeverity -> LoggerSet -> Logger
212158flushingFastFunc minLogLevel loggerSet =
213− Logger mempty mempty $ \_ stack logLevel msg ->
159+ Logger mempty $ \_ stack logLevel msg ->
214160 when (logLevel >= minLogLevel) $ do
215161 ts <- getCurrentTime
216162 pushLogStr loggerSet
@@ -234,14 +180,14 @@ flushingStderrLogger =
234180-- | Make our outdated 'Logger' of fast-logger's 'LoggerSet'
235181fastFunc :: LoggerSet -> Logger
236182fastFunc loggerSet =
237− Logger mempty mempty $ \_ _ _ msg -> pushLogStr loggerSet $ toLogStr msg
183+ Logger mempty $ \_ _ _ msg -> pushLogStr loggerSet $ toLogStr msg
238184
239185type LogSource = Text
240186
241187-- | Default logger tests and same things.
242188defaultFastFunc :: LogSource -> LogSeverity -> LoggerSet -> Logger
243189defaultFastFunc loc minLogLevel loggerSet =
244− Logger mempty mempty $ \_ stack s msg -> when (s >= minLogLevel) $ do
190+ Logger mempty $ \_ stack s msg -> when (s >= minLogLevel) $ do
245191 ts <- getCurrentTime
246192 pushLogStr loggerSet $ formatLogStr ts stack loc s (toLogStr msg)
247193