@@ -941,19 +941,29 @@ logItem
942logItem a ns loc sev msg = do
942logItem a ns loc sev msg = do
943 LogEnv{..} <- getLogEnv
943 LogEnv{..} <- getLogEnv
944− liftIO $ do
944+ logKatipItem =<< liftIO
946− <$> pure _logEnvApp
945+ (Item <$> pure _logEnvApp
947− <*> pure _logEnvEnv
946+ <*> pure _logEnvEnv
948− <*> pure sev
947+ <*> pure sev
949− <*> (mkThreadIdText <$> myThreadId)
948+ <*> (mkThreadIdText <$> myThreadId)
950− <*> pure _logEnvHost
949+ <*> pure _logEnvHost
951− <*> pure _logEnvPid
950+ <*> pure _logEnvPid
952− <*> pure a
951+ <*> pure a
953− <*> pure msg
952+ <*> pure msg
954− <*> _logEnvTimer
953+ <*> _logEnvTimer
955− <*> pure (_logEnvApp <> ns)
954+ <*> pure (_logEnvApp <> ns)
956− <*> pure loc
955+ <*> pure loc)
957+-- | Log already constructed 'Item'. This is the lowest level function that other log*
959+-- It can be useful when implementing centralised logging services.
961+ :: (A.Applicative m, LogItem a, Katip m)
964+logKatipItem item = do
965+ LogEnv{..} <- getLogEnv
957 FT.forM_ (M.elems _logEnvScribes) $ \ ScribeHandle {..} -> do
967 FT.forM_ (M.elems _logEnvScribes) $ \ ScribeHandle {..} -> do
958 whenM (scribePermitItem shScribe item) $
968 whenM (scribePermitItem shScribe item) $
959 void $ atomically (tryWriteTBQueue shChan (NewItem item))
969 void $ atomically (tryWriteTBQueue shChan (NewItem item))