Popularity
1.2
Declining
Activity
0.0
Stable
1
1
0

Monthly Downloads: 35
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags: Logging    

graflog alternatives and similar packages

Based on the "Logging" category.
Alternatively, view graflog alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of graflog or a related project?

Add another 'Logging' Package

README

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 ''UserSpec
    

    which 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 jimbo
    
  • you must force stdout to flush after each line, or logs won't appear in a timely manner: call Graflog.Console.enableStdoutLineBuffering at 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)

To Do:

  • CorrelationId and EventId generation
  • Generic derivation of ToLog / ToJSON instances
  • Support for non-JSON logging?