packages feed

log-base 0.9.1.1 → 0.10.0.0

raw patch · 4 files changed

+22/−31 lines, 4 filesdep −monad-timePVP ok

version bump matches the API change (PVP)

Dependencies removed: monad-time

API changes (from Hackage documentation)

- Log.Class: class Monad m => MonadTime (m :: Type -> Type)
- Log.Class: currentTime :: MonadTime m => m UTCTime
- Log.Monad: instance (Control.Monad.Base.MonadBase GHC.Types.IO m, Control.Monad.Time.MonadTime m) => Log.Class.MonadLog (Log.Monad.LogT m)
+ Log.Monad: instance Control.Monad.Base.MonadBase GHC.Types.IO m => Log.Class.MonadLog (Log.Monad.LogT m)
- Log.Class: class MonadTime m => MonadLog m
+ Log.Class: class Monad m => MonadLog m
- Log.Class: logMessage :: MonadLog m => UTCTime -> LogLevel -> Text -> Value -> m ()
+ Log.Class: logMessage :: MonadLog m => LogLevel -> Text -> Value -> m ()

Files

CHANGELOG.md view
@@ -1,3 +1,6 @@+# log -base-0.10.0.0 (2021-06-09)+* Drop `MonadTime` constraint and use system time by default.+ # log-base-0.9.1.1 (2021-05-28) * Support GHC 9.0. 
log-base.cabal view
@@ -1,5 +1,5 @@ name:                log-base-version:             0.9.1.1+version:             0.10.0.0 synopsis:            Structured logging solution (base package)  description:         A library that provides a way to record structured log@@ -47,7 +47,6 @@                        exceptions >=0.6,                        mmorph >=1.0.9 && <1.2,                        monad-control >=0.3,-                       monad-time >= 0.2,                        mtl,                        semigroups,                        stm >=2.4,
src/Log/Class.hs view
@@ -1,9 +1,6 @@ -- | The 'MonadLog' type class of monads with logging capabilities.-{-# OPTIONS_GHC -fno-warn-deprecated-flags #-}-{-# LANGUAGE OverlappingInstances #-} module Log.Class (     UTCTime-  , MonadTime(..)   , MonadLog(..)   , logAttention   , logInfo@@ -13,7 +10,6 @@   , logTrace_   ) where -import Control.Monad.Time import Control.Monad.Trans import Control.Monad.Trans.Control import Data.Aeson@@ -29,13 +25,13 @@ -- 'MonadLog' carries with it some associated state (the logging -- environment) that can be modified locally with 'localData' and -- 'localDomain'.-class MonadTime m => MonadLog m where+class Monad m => MonadLog m where   -- | Write a message to the log.-  logMessage  :: UTCTime  -- ^ Time of the event.-              -> LogLevel -- ^ Log level.-              -> T.Text   -- ^ Log message.-              -> Value    -- ^ Additional data associated with the message.-              -> m ()+  logMessage+    :: LogLevel -- ^ Log level.+    -> T.Text   -- ^ Log message.+    -> Value    -- ^ Additional data associated with the message.+    -> m ()   -- | Extend the additional data associated with each log message locally.   localData   :: [Pair] -> m a -> m a   -- | Extend the current application domain locally.@@ -45,12 +41,12 @@   getLoggerEnv :: m LoggerEnv  -- | Generic, overlapping instance.-instance (+instance {-# OVERLAPPABLE #-} (     MonadLog m   , Monad (t m)   , MonadTransControl t   ) => MonadLog (t m) where-    logMessage time level message = lift . logMessage time level message+    logMessage level message = lift . logMessage level message     localData data_ m = controlT $ \run -> localData data_ (run m)     localDomain domain m = controlT $ \run -> localDomain domain (run m)     getLoggerEnv = lift getLoggerEnv@@ -64,17 +60,17 @@ -- | Log a message and its associated data using current time as the -- event time and the 'LogAttention' log level. logAttention :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()-logAttention msg = logNow LogAttention msg . toJSON+logAttention msg = logMessage LogAttention msg . toJSON  -- | Log a message and its associated data using current time as the -- event time and the 'LogInfo' log level. logInfo :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()-logInfo msg = logNow LogInfo msg . toJSON+logInfo msg = logMessage LogInfo msg . toJSON  -- | Log a message and its associated data using current time as the -- event time and the 'LogTrace' log level. logTrace :: (MonadLog m, ToJSON a) => T.Text -> a -> m ()-logTrace msg = logNow LogTrace msg . toJSON+logTrace msg = logMessage LogTrace msg . toJSON  -- | Like 'logAttention', but without any additional associated data. logAttention_ :: MonadLog m => T.Text -> m ()@@ -87,12 +83,3 @@ -- | Like 'logTrace', but without any additional associated data. logTrace_ :: MonadLog m => T.Text -> m () logTrace_ = (`logTrace` emptyObject)---------------------------------------------- | Write a log message using the given log level, message text and--- additional data. Current time is used as the event time.-logNow :: MonadLog m => LogLevel -> T.Text -> Value -> m ()-logNow level message data_ = do-  time <- currentTime-  logMessage time level message data_
src/Log/Monad.hs view
@@ -16,7 +16,6 @@ import Control.Monad.Base import Control.Monad.Catch import Control.Monad.Error.Class-import Control.Monad.Fail (MonadFail) import Control.Monad.IO.Unlift import Control.Monad.Morph (MFunctor (..)) import Control.Monad.Reader@@ -25,7 +24,9 @@ import Control.Monad.Writer.Class import Data.Aeson import Data.Text (Text)+import Data.Time import Prelude+import qualified Control.Monad.Fail as MF import qualified Control.Exception as E import qualified Data.HashMap.Strict as H @@ -38,7 +39,7 @@ -- | Monad transformer that adds logging capabilities to the underlying monad. newtype LogT m a = LogT { unLogT :: InnerLogT m a }   deriving (Alternative, Applicative, Functor, Monad, MonadBase b, MonadCatch-           ,MonadIO, MonadMask, MonadPlus, MonadThrow, MonadTrans, MonadFail+           ,MonadIO, MonadMask, MonadPlus, MonadThrow, MonadTrans, MF.MonadFail            ,MonadError e, MonadWriter w, MonadState s)  instance MonadReader r m => MonadReader r (LogT m) where@@ -139,9 +140,10 @@   withRunInIO inner = LogT $ withRunInIO $ \run -> inner (run . unLogT)   {-# INLINE withRunInIO #-} -instance (MonadBase IO m, MonadTime m) => MonadLog (LogT m) where-  logMessage time level message data_ = LogT . ReaderT $ \logEnv ->-    liftBase $ logMessageIO logEnv time level message data_+instance MonadBase IO m => MonadLog (LogT m) where+  logMessage level message data_ = LogT . ReaderT $ \logEnv -> liftBase $ do+    time <- getCurrentTime+    logMessageIO logEnv time level message data_    localData data_ =     LogT . local (\e -> e { leData = data_ ++ leData e }) . unLogT