The graflog package

[Tags:bsd3, library, test]

Please see README.md


[Skip to Readme]

Properties

Versions 0.1.0, 0.1.1, 0.1.2, 1.0.0, 2.0.0, 3.0.0, 4.0.0, 5.0.0, 6.0.0, 6.1.0, 6.1.1, 6.1.2, 6.1.3, 6.1.4, 6.1.5
Dependencies aeson, base (>=4.7 && <5), bytestring, containers, mtl, text, text-conversions [details]
License BSD3
Copyright 2016 Michael A. Arnold
Author Michael Adlai Arnold
Maintainer marnold@cj.com
Category Logging
Home page https://github.com/m-arnold/graflog#readme
Source repository head: git clone https://github.com/m-arnold/graflog
Uploaded Wed Feb 15 22:28:37 UTC 2017 by marnold
Distributions NixOS:6.1.5
Downloads 241 total (17 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2017-02-15 [all 1 reports]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for graflog

Readme for graflog-6.1.5

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 "jimbo@gmail.com" ...)
      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?