@@ -1,10 +1,7 @@
2module Control.Logger
2module Control.Logger
4 , loggerContext
4 , loggerContext
9 , logMsgWith
6 , logMsgWith
@@ -35,27 +32,20 @@ module Control.Logger
35 , compactCallStack
32 , compactCallStack
37 , ToObject(..)
34 , ToObject(..)
43import Control.Has
37import Control.Has
44−import Control.Lens hiding (censoring)
45import Control.Logger.Internal
38import Control.Logger.Internal
46−import Control.Logger.Orphans ()
39+import Control.Logger.Orphans ()
48import Control.Monad.Catch
40import Control.Monad.Catch
49−import Control.Monad.IO.Class
50−import qualified Data.List as List
41+import qualified Data.List as List
52−import Data.Text (Text)
42+import Data.Text (Text)
53−import qualified Data.Text as Text
43+import qualified Data.Text as Text
54import Data.Time
44import Data.Time
55import GHC.Stack
45import GHC.Stack
56−import Katip (ToObject (..))
46+import Katip (ToObject(..))
57import System.Log.FastLogger
47import System.Log.FastLogger
58−import Text.Shakespeare.Text (st)
48+import Text.Shakespeare.Text (st)
61 :: (LoggingMonad r m)
51 :: (LoggingMonad r m)
@@ -109,50 +99,6 @@ logErrorWith
110logErrorWith logger msg = withFrozenCallStack (logMsgWith logger Error msg)
100logErrorWith logger msg = withFrozenCallStack (logMsgWith logger Error msg)
112−safeReplace :: Text -> Text -> Text -> Text
113−safeReplace what with where_
114− | Text.null what = where_
115− | otherwise = Text.replace what with where_
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)
122−-- | Censor with "***"
123−censor :: Text -> Logger -> Logger
124−censor = censorWith "***"
126−-- | Run an action with adjusted scrubber
128− :: forall r m a. (Has Logger r, MonadReader r m)
129− => (Endo Text -> Endo Text)
132−withScrubber scrubF = local expandScrubber
134− expandScrubber :: r -> r
135− expandScrubber = over part (over scrubber scrubF)
137−-- | Run an action while censoring additional text from logs
139− :: (Has Logger r, MonadReader r m)
144−censoringWith replacement txt = withScrubber (<> censored)
146− censored = Endo (safeReplace txt replacement)
148−-- | Run an action while censoring additional text from logs
150− :: (Has Logger r, MonadReader r m)
154−censoring = censoringWith "***"
156-- | Log exceptions occured in computation and just ignore them.
102-- | Log exceptions occured in computation and just ignore them.
157tryLogError
103tryLogError
158 :: (MonadIO m, MonadCatch m, Has Logger r, MonadReader r m)
104 :: (MonadIO m, MonadCatch m, Has Logger r, MonadReader r m)
@@ -203,14 +149,14 @@ fileLogger :: MonadIO m => FilePath -> m Logger
203fileLogger fp = fastFunc <$> liftIO (newFileLoggerSet defaultBufSize fp)
149fileLogger fp = fastFunc <$> liftIO (newFileLoggerSet defaultBufSize fp)
205silentLogger :: Logger
151silentLogger :: Logger
206−silentLogger = Logger mempty mempty (\_ _ _ _ -> return ())
152+silentLogger = Logger mempty (\_ _ _ _ -> return ())
208-- | Logger which flushes buffer after each message. This is useful with
154-- | Logger which flushes buffer after each message. This is useful with
209-- stderrLogger.
155-- stderrLogger.
210flushingFastFunc
156flushingFastFunc
211 :: LogSeverity -> LoggerSet -> Logger
157 :: LogSeverity -> LoggerSet -> Logger
212flushingFastFunc minLogLevel loggerSet =
158flushingFastFunc minLogLevel loggerSet =
213− Logger mempty mempty $ \_ stack logLevel msg ->
159+ Logger mempty $ \_ stack logLevel msg ->
214 when (logLevel >= minLogLevel) $ do
160 when (logLevel >= minLogLevel) $ do
215 ts <- getCurrentTime
161 ts <- getCurrentTime
216 pushLogStr loggerSet
162 pushLogStr loggerSet
@@ -234,14 +180,14 @@ flushingStderrLogger =
234-- | Make our outdated 'Logger' of fast-logger's 'LoggerSet'
180-- | Make our outdated 'Logger' of fast-logger's 'LoggerSet'
235fastFunc :: LoggerSet -> Logger
181fastFunc :: LoggerSet -> Logger
236fastFunc loggerSet =
182fastFunc loggerSet =
237− Logger mempty mempty $ \_ _ _ msg -> pushLogStr loggerSet $ toLogStr msg
183+ Logger mempty $ \_ _ _ msg -> pushLogStr loggerSet $ toLogStr msg
239type LogSource = Text
185type LogSource = Text
241-- | Default logger tests and same things.
187-- | Default logger tests and same things.
242defaultFastFunc :: LogSource -> LogSeverity -> LoggerSet -> Logger
188defaultFastFunc :: LogSource -> LogSeverity -> LoggerSet -> Logger
243defaultFastFunc loc minLogLevel loggerSet =
189defaultFastFunc loc minLogLevel loggerSet =
244− Logger mempty mempty $ \_ stack s msg -> when (s >= minLogLevel) $ do
190+ Logger mempty $ \_ stack s msg -> when (s >= minLogLevel) $ do
245 ts <- getCurrentTime
191 ts <- getCurrentTime
246 pushLogStr loggerSet $ formatLogStr ts stack loc s (toLogStr msg)
192 pushLogStr loggerSet $ formatLogStr ts stack loc s (toLogStr msg)