1 {-# LANGUAGE DeriveDataTypeable #-}
2 {-# LANGUAGE DeriveGeneric #-}
3 {-# LANGUAGE OverloadedStrings #-}
5 module Graylog.Gelf where
7 import Data.Aeson (ToJSON (..), Value (..), genericToJSON,
9 import Data.Aeson.Casing
10 import Data.Text (Text)
17 { _gelfVersion :: Version
19 , _gelfShortMessage :: Text
20 , _gelfFullMessage :: Maybe Text
21 , _gelfTimestamp :: Maybe UTCTime
22 , _gelfLevel :: Maybe SyslogLevel
23 , _gelfLine :: Maybe Word
24 , _gelfFile :: Maybe Text
26 deriving (Show, Typeable, Generic)
28 instance ToJSON GELF where
29 toJSON = genericToJSON $ aesonPrefix snakeCase
35 deriving (Eq, Show, Typeable, Generic)
37 instance ToJSON Version where
38 toJSON Version1x1 = String "1.1"
51 deriving (Eq, Ord, Show, Typeable, Generic)
53 instance ToJSON SyslogLevel where
54 toJSON Emergency = Number 0
55 toJSON Alert = Number 1
56 toJSON Critical = Number 2
57 toJSON Error = Number 3
58 toJSON Warning = Number 4
59 toJSON Notice = Number 5
60 toJSON Informational = Number 6
61 toJSON Debug = Number 7
67 -> Text -- ^ Short message
69 simpleGelf host short =
70 GELF Version1x1 host short Nothing Nothing Nothing Nothing Nothing