packages feed

graflog 2.0.0 → 3.0.0

raw patch · 2 files changed

+61/−11 lines, 2 filesdep +containersPVP ok

version bump matches the API change (PVP)

Dependencies added: containers

API changes (from Hackage documentation)

- Graflog.Logger: Protected :: a -> Protected a
- Graflog.Logger: [unProtect] :: Protected a -> a
- Graflog.Logger: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Graflog.Logger.Protected a)
- Graflog.Logger: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Graflog.Logger.Protected a)
- Graflog.Logger: instance GHC.Base.Functor Graflog.Logger.Protected
- Graflog.Logger: instance GHC.Classes.Eq a => GHC.Classes.Eq (Graflog.Logger.Protected a)
- Graflog.Logger: instance GHC.Show.Show a => GHC.Show.Show (Graflog.Logger.Protected a)
- Graflog.Logger: newtype Protected a
+ Graflog.Logger: Dictionary :: (Map Text Log) -> Log
+ Graflog.Logger: List :: [Log] -> Log
+ Graflog.Logger: Message :: Text -> Log
+ Graflog.Logger: Redacted :: Log
+ Graflog.Logger: class ToLog a
+ Graflog.Logger: data Log
+ Graflog.Logger: dictionary :: [(Text, Log)] -> Log
+ Graflog.Logger: instance Data.Aeson.Types.ToJSON.ToJSON Graflog.Logger.Log
+ Graflog.Logger: instance Data.String.IsString Graflog.Logger.Log
+ Graflog.Logger: instance GHC.Classes.Eq Graflog.Logger.Log
+ Graflog.Logger: instance GHC.Show.Show Graflog.Logger.Log
+ Graflog.Logger: instance Graflog.Logger.ToLog Data.Text.Internal.Text
+ Graflog.Logger: instance Graflog.Logger.ToLog GHC.Integer.Type.Integer
+ Graflog.Logger: instance Graflog.Logger.ToLog GHC.Types.Double
+ Graflog.Logger: instance Graflog.Logger.ToLog GHC.Types.Float
+ Graflog.Logger: instance Graflog.Logger.ToLog GHC.Types.Int
+ Graflog.Logger: instance Graflog.Logger.ToLog Graflog.Logger.Log
+ Graflog.Logger: instance Graflog.Logger.ToLog a => Graflog.Logger.ToLog (Data.Map.Base.Map Data.Text.Internal.Text a)
+ Graflog.Logger: instance Graflog.Logger.ToLog a => Graflog.Logger.ToLog [a]
+ Graflog.Logger: numToLog :: (Show a, Num a) => a -> Log
+ Graflog.Logger: pair :: ToLog a => Text -> a -> (Text, Log)
+ Graflog.Logger: toLog :: ToLog a => a -> Log

Files

graflog.cabal view
@@ -1,5 +1,5 @@ name:                graflog-version:             2.0.0+version:             3.0.0 synopsis:            Monadic correlated log events description:         Please see README.md homepage:            https://github.com/m-arnold/graflog#readme@@ -21,6 +21,7 @@                      , text                      , aeson                      , bytestring+                     , containers   default-language:    Haskell2010   default-extensions:  GeneralizedNewtypeDeriving DeriveFunctor FlexibleContexts FlexibleInstances @@ -35,6 +36,7 @@                      , mtl                      , text                      , aeson+                     , containers   ghc-options:         -threaded -rtsopts -with-rtsopts=-N   default-language:    Haskell2010   default-extensions:  ConstraintKinds DeriveGeneric FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving KindSignatures LambdaCase MultiParamTypeClasses NamedFieldPuns OverloadedStrings RankNTypes ScopedTypeVariables TypeOperators DuplicateRecordFields
src/Graflog/Logger.hs view
@@ -7,9 +7,13 @@   , CorrelationId(..)   , EventId(..)   , Action(..)-  , Protected(..)   , logEvent'   , jsonEncode+  , ToLog(..)+  , Log(..)+  , numToLog+  , dictionary+  , pair   ) where  import Data.Aeson@@ -17,21 +21,66 @@ import Data.ByteString (ByteString) import Data.ByteString.Lazy (toStrict) import Data.Maybe (fromJust)-import Data.String (IsString)+import Data.Map (Map(..))+import qualified Data.Map as Map+import Data.String (IsString(..)) import Data.Text (Text(..))-import Data.Text.Conversions (decodeConvertText, UTF8(..))+import Data.Text.Conversions (decodeConvertText, UTF8(..), toText)  import Graflog.Console -newtype Protected a = Protected { unProtect :: a }-  deriving (Functor, Show, Eq)+data Log+  = Dictionary (Map Text Log)+  | List [Log]+  | Message Text+  | Redacted+  deriving (Eq, Show) -instance ToJSON a => ToJSON (Protected a) where-  toJSON (Protected a) = "(REDACTED)"+instance IsString Log where+  fromString = Message . toText -instance FromJSON a => FromJSON (Protected a) where-  parseJSON v = Protected <$> parseJSON v+class ToLog a where+  toLog :: a -> Log +instance ToLog Log where+  toLog = id++instance ToLog Text where+  toLog = Message++instance ToLog a => ToLog [a] where+  toLog = List . fmap toLog++numToLog :: (Show a, Num a) => a -> Log+numToLog = Message . toText . show++instance ToLog Int where+  toLog = numToLog++instance ToLog Integer where+  toLog = numToLog++instance ToLog Float where+  toLog = numToLog++instance ToLog Double where+  toLog = numToLog++instance ToLog a => ToLog (Map Text a) where+  toLog = Dictionary . fmap toLog++dictionary :: [(Text, Log)] -> Log+dictionary = Dictionary . Map.fromList++pair :: ToLog a => Text -> a -> (Text, Log)+pair key value = (key, toLog value)++instance ToJSON Log where+  toJSON (Message a) = String a+  toJSON (List a) = toJSON a+  toJSON (Dictionary a) = toJSON a+  toJSON Redacted = String "(REDACTED)"+ class Monad m => Logger m where   logEvent :: Event -> m () @@ -50,7 +99,6 @@   , _action :: Action   , _message :: Value   } deriving (Eq, Show)- deriveJSON defaultOptions{fieldLabelModifier = drop 1} ''Event  logEvent' :: Console m => Event -> m ()