heavy-logger 0.3.2.1 → 0.3.2.2
raw patch · 2 files changed
+26/−2 lines, 2 filesdep ~text-format-heavyPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: text-format-heavy
API changes (from Hackage documentation)
+ System.Log.Heavy.Types: instance (GHC.Base.Monad m, Control.Monad.IO.Class.MonadIO m, System.Log.Heavy.Types.HasLogging m) => Control.Monad.Logger.MonadLoggerIO m
Files
- heavy-logger.cabal +2/−2
- src/System/Log/Heavy/Types.hs +24/−0
heavy-logger.cabal view
@@ -1,5 +1,5 @@ name: heavy-logger-version: 0.3.2.1+version: 0.3.2.2 synopsis: Full-weight logging based on fast-logger description: This is Haskell logging library, which prefers functionality and extendability over light weight and simplicity. It can use fast-logger as backend, and is compatible @@ -46,7 +46,7 @@ fast-logger >= 2.4.10, monad-logger >= 0.3.22, hsyslog >= 5,- text-format-heavy >= 0.1.5.1,+ text-format-heavy >= 0.1.5.2, thread-local-storage >= 0.1.1, stm >= 2.4 hs-source-dirs: src
src/System/Log/Heavy/Types.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings, TypeSynonymInstances, FlexibleInstances, ExistentialQuantification, TypeFamilies, GeneralizedNewtypeDeriving, StandaloneDeriving, MultiParamTypeClasses, UndecidableInstances, AllowAmbiguousTypes, ScopedTypeVariables, FunctionalDependencies, FlexibleContexts, ConstraintKinds #-}+{-# LANGUAGE CPP #-} -- | This module contains generic types definition, along with some utilities. module System.Log.Heavy.Types@@ -22,6 +23,9 @@ import Control.Monad.Reader import Control.Monad.Logger (MonadLogger (..))+#if MIN_VERSION_monad_logger(0,3,10)+import Control.Monad.Logger (MonadLoggerIO (..))+#endif import Control.Monad.Trans.Control import Control.Exception.Lifted (bracket) import Language.Haskell.TH@@ -227,6 +231,26 @@ textFromLogStr :: ToLogStr str => str -> TL.Text textFromLogStr str = TL.fromStrict $ TE.decodeUtf8 $ fromLogStr $ toLogStr str++#if MIN_VERSION_monad_logger(0,3,10)+-- | Another compatibility instance.+instance (Monad m, MonadIO m, HasLogging m) => MonadLoggerIO m where+ askLoggerIO = do+ logger <- getLogger+ context <- getLogContext+ return $ \loc src level msg ->+ logger $ LogMessage {+ lmLevel = logLevelToLevel level,+ lmSource = (splitDots $ T.unpack src),+ lmLocation = loc,+ lmFormatString = textFromLogStr msg,+ lmFormatVars = (),+ lmContext = context+ }+ where+ textFromLogStr :: ToLogStr str => str -> TL.Text+ textFromLogStr str = TL.fromStrict $ TE.decodeUtf8 $ fromLogStr $ toLogStr str+#endif instance F.Formatable LogStr where formatVar fmt str = F.formatVar fmt $ fromLogStr str