1 {-# LANGUAGE DeriveDataTypeable #-}
2 {-# LANGUAGE DeriveGeneric #-}
3 {-# LANGUAGE OverloadedStrings #-}
5 -- | Default formatting for Graylog messages,
6 -- see http://docs.graylog.org/en/latest/pages/gelf.html
7 module Graylog.Gelf where
9 import Data.Aeson (ToJSON (..), Value (..), genericToJSON,
11 import Data.Aeson.Casing
12 import Data.Text (Text)
19 { _gelfVersion :: Version
21 , _gelfShortMessage :: Text
22 , _gelfFullMessage :: Maybe Text
23 , _gelfTimestamp :: Maybe UTCTime
24 , _gelfLevel :: Maybe SyslogLevel
25 , _gelfLine :: Maybe Word
26 , _gelfFile :: Maybe Text
28 deriving (Show, Typeable, Generic)
30 instance ToJSON GELF where
31 toJSON = genericToJSON $ aesonPrefix snakeCase
37 deriving (Eq, Show, Typeable, Generic)
39 instance ToJSON Version where
40 toJSON Version1x1 = String "1.1"
53 deriving (Eq, Ord, Show, Typeable, Generic)
55 instance ToJSON SyslogLevel where
56 toJSON Emergency = Number 0
57 toJSON Alert = Number 1
58 toJSON Critical = Number 2
59 toJSON Error = Number 3
60 toJSON Warning = Number 4
61 toJSON Notice = Number 5
62 toJSON Informational = Number 6
63 toJSON Debug = Number 7
69 -> Text -- ^ Short message
71 simpleGelf host short =
72 GELF Version1x1 host short Nothing Nothing Nothing Nothing Nothing