]> git.immae.eu Git - github/fretlink/haskell-graylog.git/blame - src/Graylog/Gelf.hs
Successful test of un-chunked message.
[github/fretlink/haskell-graylog.git] / src / Graylog / Gelf.hs
CommitLineData
52696643
A
1{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE OverloadedStrings #-}
4
5module Graylog.Gelf where
6
7import Data.Aeson (ToJSON (..), Value (..), genericToJSON,
8 toJSON)
9import Data.Aeson.Casing
52696643
A
10import Data.Text (Text)
11import Data.Time
12import Data.Typeable
52696643
A
13import GHC.Generics
14
15data GELF
16 = GELF
15981d57
A
17 { _gelfVersion :: Version
18 , _gelfHost :: Text
19 , _gelfShortMessage :: Text
20 , _gelfFullMessage :: Maybe Text
21 , _gelfTimestamp :: Maybe UTCTime
22 , _gelfLevel :: Maybe SyslogLevel
23 , _gelfLine :: Maybe Word
24 , _gelfFile :: Maybe Text
52696643
A
25 }
26 deriving (Show, Typeable, Generic)
27
28instance ToJSON GELF where
29 toJSON = genericToJSON $ aesonPrefix snakeCase
30
31--
32
33data Version
34 = Version1x1
35 deriving (Eq, Show, Typeable, Generic)
36
37instance ToJSON Version where
38 toJSON Version1x1 = String "1.1"
39
40--
41
42data SyslogLevel
43 = Emergency
44 | Alert
45 | Critical
46 | Error
47 | Warning
48 | Notice
49 | Informational
50 | Debug
51 deriving (Eq, Ord, Show, Typeable, Generic)
52
53instance 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
b23afe7b
A
62
63--
64
65simpleGelf
66 :: Text -- ^ Hostname
67 -> Text -- ^ Short message
68 -> GELF
69simpleGelf host short =
70 GELF Version1x1 host short Nothing Nothing Nothing Nothing Nothing