on master help sign in
Merge pull request #111 from vlatkoB/master

Implement `logKatipItem` to log the Item

commit737e10b48f4f150454ed5fdcf057ee6f9ec7acdd authorMichael Xavier <michael@michaelxavier.net> dateWed 24 Jul 2019, 08:10 (7 years ago) parent0aa8b994b0146e
4 files changed+30−14
katip/changelog.md+5 katip/katip.cabal+1−1 katip/src/Katip.hs+1 katip/src/Katip/Core.hs+23−13
katip/changelog.md+5
@@ -1,3 +1,8 @@
1+0.8.3.0
2+=======
3+
4+* Add `logKatipItem` function and reimplement `logItem` to use it. [vlatkoB](https://github.com/vlatkoB)
5+
160.8.2.0
27=======
38* Add `MonadFail` instances for `base` >= 4.9.0.0 [Koray Al](https://github.com/korayal)
katip/katip.cabal+1−1
@@ -1,5 +1,5 @@
11name: katip
2−version: 0.8.2.0
2+version: 0.8.3.0
33synopsis: A structured logging framework.
44description:
55 Katip is a structured logging framework. See README.md for more details.
katip/src/Katip.hs+1
@@ -161,6 +161,7 @@ module Katip
161161 , logT
162162 , logLoc
163163 , logItem
164+ , logKatipItem
164165 , logException
165166 -- ** 'KatipContext': Logging With Context
166167 -- $katipcontextlogging
katip/src/Katip/Core.hs+23−13
@@ -941,19 +941,29 @@ logItem
941941 -> m ()
942942logItem a ns loc sev msg = do
943943 LogEnv{..} <- getLogEnv
944− liftIO $ do
945− item <- Item
946− <$> pure _logEnvApp
947− <*> pure _logEnvEnv
948− <*> pure sev
949− <*> (mkThreadIdText <$> myThreadId)
950− <*> pure _logEnvHost
951− <*> pure _logEnvPid
952− <*> pure a
953− <*> pure msg
954− <*> _logEnvTimer
955− <*> pure (_logEnvApp <> ns)
956− <*> pure loc
944+ logKatipItem =<< liftIO
945+ (Item <$> pure _logEnvApp
946+ <*> pure _logEnvEnv
947+ <*> pure sev
948+ <*> (mkThreadIdText <$> myThreadId)
949+ <*> pure _logEnvHost
950+ <*> pure _logEnvPid
951+ <*> pure a
952+ <*> pure msg
953+ <*> _logEnvTimer
954+ <*> pure (_logEnvApp <> ns)
955+ <*> pure loc)
956+
957+-- | Log already constructed 'Item'. This is the lowest level function that other log*
958+-- functions use.
959+-- It can be useful when implementing centralised logging services.
960+logKatipItem
961+ :: (A.Applicative m, LogItem a, Katip m)
962+ => Item a
963+ -> m ()
964+logKatipItem item = do
965+ LogEnv{..} <- getLogEnv
966+ liftIO $
957967 FT.forM_ (M.elems _logEnvScribes) $ \ ScribeHandle {..} -> do
958968 whenM (scribePermitItem shScribe item) $
959969 void $ atomically (tryWriteTBQueue shChan (NewItem item))