-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Support for graylog output.
--   
--   Support for sending GELF formatted messages to graylog over chunked
--   UDP.
@package graylog
@version 0.1.0.1


-- | Default formatting for Graylog messages, see
--   <a>http://docs.graylog.org/en/latest/pages/gelf.html</a>
module Graylog.Gelf
data GELF
GELF :: Version -> Text -> Text -> Maybe Text -> Maybe UTCTime -> Maybe SyslogLevel -> Maybe Word -> Maybe Text -> GELF
[_gelfVersion] :: GELF -> Version
[_gelfHost] :: GELF -> Text
[_gelfShortMessage] :: GELF -> Text
[_gelfFullMessage] :: GELF -> Maybe Text
[_gelfTimestamp] :: GELF -> Maybe UTCTime
[_gelfLevel] :: GELF -> Maybe SyslogLevel
[_gelfLine] :: GELF -> Maybe Word
[_gelfFile] :: GELF -> Maybe Text
data Version
Version1x1 :: Version
data SyslogLevel
Emergency :: SyslogLevel
Alert :: SyslogLevel
Critical :: SyslogLevel
Error :: SyslogLevel
Warning :: SyslogLevel
Notice :: SyslogLevel
Informational :: SyslogLevel
Debug :: SyslogLevel
simpleGelf :: Text -> Text -> GELF
instance GHC.Generics.Generic Graylog.Gelf.GELF
instance GHC.Show.Show Graylog.Gelf.GELF
instance GHC.Generics.Generic Graylog.Gelf.SyslogLevel
instance GHC.Show.Show Graylog.Gelf.SyslogLevel
instance GHC.Classes.Ord Graylog.Gelf.SyslogLevel
instance GHC.Classes.Eq Graylog.Gelf.SyslogLevel
instance GHC.Generics.Generic Graylog.Gelf.Version
instance GHC.Show.Show Graylog.Gelf.Version
instance GHC.Classes.Eq Graylog.Gelf.Version
instance Data.Aeson.Types.ToJSON.ToJSON Graylog.Gelf.GELF
instance Data.Aeson.Types.ToJSON.ToJSON Graylog.Gelf.SyslogLevel
instance Data.Aeson.Types.ToJSON.ToJSON Graylog.Gelf.Version


-- | UDP Chunked support for sending messages to graylog.
module Graylog.UDP
sendLog :: Graylog -> GELF -> IO ()

-- | Handle for a socket connected to Graylog. In some cases this socket is
--   UDP and will not have a maintained session.
data Graylog
_graylogHost :: Graylog -> String
_graylogPort :: Graylog -> String
_graylogAddress :: Graylog -> AddrInfo
_graylogSocket :: Graylog -> Socket
_graylogHostName :: Graylog -> Text
_graylogChunkSize :: Graylog -> ChunkSize

-- | The maximum size of each datagram when using UDP transit methods.
type ChunkSize = Word
defaultChunkSize :: ChunkSize
openGraylog :: HostName -> ServiceName -> ChunkSize -> IO (Either String Graylog)
closeGraylog :: Graylog -> IO ()
