katip 0.5.0.2 → 0.5.0.3
raw patch · 3 files changed
+51/−1 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- changelog.md +4/−0
- katip.cabal +1/−1
- src/Katip.hs +46/−0
changelog.md view
@@ -1,3 +1,7 @@+0.5.0.3+=======+* Add worked example of Katip/KatipContext to the haddocks.+ 0.5.0.2 ======= * Export Katip.Compat for Windows users.
katip.cabal view
@@ -1,5 +1,5 @@ name: katip-version: 0.5.0.2+version: 0.5.0.3 synopsis: A structured logging framework. description: Katip is a structured logging framework. See README.md for more details.
src/Katip.hs view
@@ -27,6 +27,52 @@ -- -- @ --+-- Another common case that you have some sort of App monad that's+-- based on ReaderT with some Config state. This is a perfect place to+-- insert read-only katip state:+--+-- @+--+-- import Katip as K+--+-- data Config = Config {+-- logNamespace :: K.Namespace+-- , logContext :: K.LogContexts+-- , logEnv :: K.LogEnv+-- -- whatever other read-only config you need+-- }+--+-- newtype App m a = App {+-- unApp :: ReaderT Config m a+-- } deriving (Functor, Applicative, Monad) -- more instances as needed+--+--+-- -- These instances get even easier with lenses!+-- instance (MonadIO m) => K.Katip (App m) where+-- getLogEnv = asks logEnv+-- -- with lens:+-- -- getLogEnv = view logEnv+-- localLogEnv f (App m) = App (local (\s -> s { logEnv = f (logEnv s)}) m)+-- -- with lens:+-- -- localLogEnv f (App m) = App (local (over logEnv f) m)+--+--+-- instance (MonadIO m) => K.KatipContext (App m) where+-- getKatipContext = asks logContext+-- -- with lens:+-- -- getKatipContext = view logContext+-- localKatipContext f (App m) = App (local (\s -> s { logContext = f (logContext s)}) m)+-- -- with lens:+-- -- localKatipContext f (App m) = App (local (over logContext f) m)+-- getKatipNamespace = asks logNamespace+-- -- with lens:+-- -- getKatipNamespace = view logNamespace+-- localKatipNamespace f (App m) = App (local (\s -> s { logNamespace = f (logNamespace s)}) m)+-- -- with lens:+-- -- localKatipNamespace f (App m) = App (local (over logNamespace f) m)+--+-- @+-- -- To get up and running, the workflow is generally: -- -- * Set up a 'LogEnv' using 'initLogEnv'.