Description
Monadic correlated log events.
Description
Please see README.md
README.md
Graflog
Monadic correlated log events!
##To Use:
given a data type:
data UserSpec = UserSpec { email :: Email , password :: Text , name :: Text } deriving (Eq, Show, Generic)we can create an instance of ToLog:
instance ToLog UserSpec where toLog UserSpec{email, name} = dictionary [ pair "email" email , pair "password" Redacted , pair "name" name ]and derive JSON instances of that:
deriveJSON defaultOptions ''UserSpecwhich can then be logged inside a monad:
foo = do let jimbo = UserSpec (Email "[email protected]" ...) logJSON $ Event (CorrelationId 0) (EventId 0) "User" (toLog jimbo) return jimboyou must force stdout to flush after each line, or logs won't appear in a timely manner: call
Graflog.Console.enableStdoutLineBufferingat the top of your main function.CorrelationId and EventId generation are not yet supported, so you must create an event manually:
- inside do notation: 
let event = Event (CorrelationId 0) (EventId 0) - followed at some point by: 
logJSON $ event (Action "some kind of metadata") (toLog dataToLog) 
- inside do notation: 
 
##To Do:
- CorrelationId and EventId generation
 - Generic derivation of ToLog / ToJSON instances
 - Support for non-JSON logging?