Maintainer | jon@childr.es |
---|---|
Stability | provisional |
Portability | Posix |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- data Priority
- data Facility
- newtype AppName = AppName ByteString
- newtype HostName = HostName ByteString
- newtype PriVal = PriVal CInt
- newtype ProcessID = ProcessID ByteString
- newtype MessageID = MessageID ByteString
- type Severity = Priority
- type SeverityMask = [Priority]
- data StructuredData = StructuredData
- initSyslog :: SyslogConfig -> IO SyslogFn
- type SyslogFn = Facility -> Severity -> Text -> IO ()
- data SyslogConfig = SyslogConfig {
- appName :: !AppName
- hostName :: !HostName
- processId :: !ProcessID
- severityMask :: !SeverityMask
- address :: !AddrInfo
- protocol :: Protocol
- onException :: SomeException -> IO ()
- defaultConfig :: IO SyslogConfig
- localhost :: AddrInfo
- type Protocol = PriVal -> UTCTime -> HostName -> AppName -> ProcessID -> Text -> ByteString
- rfc5424Protocol :: Protocol
- rfc3164Protocol :: Protocol
- rsyslogProtocol :: Protocol
- rfc5424Packet :: FormatTime t => PriVal -> Maybe t -> Maybe HostName -> Maybe AppName -> Maybe ProcessID -> Maybe MessageID -> Maybe StructuredData -> Text -> ByteString
- rfc3164Packet :: FormatTime t => PriVal -> t -> HostName -> AppName -> ProcessID -> Text -> ByteString
- rsyslogPacket :: FormatTime t => PriVal -> t -> HostName -> AppName -> ProcessID -> Text -> ByteString
- getAppName :: IO AppName
- getHostName :: IO HostName
- getProcessId :: IO ProcessID
- maskedPriVal :: SeverityMask -> Facility -> Severity -> Maybe PriVal
- resolveUdpAddress :: Integral n => String -> n -> IO (Maybe AddrInfo)
- rfc3339Timestamp :: FormatTime t => t -> ByteString
Syslog UDP packet component datatypes
Re-exports from hsyslog
Log messages are prioritized with one of the following levels:
>>>
[minBound..maxBound] :: [Priority]
[Emergency,Alert,Critical,Error,Warning,Notice,Info,Debug]
The Ord
instance for Priority
considers the more urgent level lower than
less urgent ones:
>>>
Emergency < Debug
True>>>
minimum [minBound..maxBound] :: Priority
Emergency>>>
maximum [minBound..maxBound] :: Priority
Debug
Emergency | the system is unusable |
Alert | action must be taken immediately |
Critical | critical conditions |
Error | error conditions |
Warning | warning conditions |
Notice | normal but significant condition |
Info | informational |
Debug | debug-level messages |
Instances
Bounded Priority | |
Enum Priority | |
Defined in System.Posix.Syslog.Priority | |
Eq Priority | |
Ord Priority | |
Defined in System.Posix.Syslog.Priority | |
Read Priority | |
Show Priority | |
Generic Priority | |
type Rep Priority | |
Defined in System.Posix.Syslog.Priority type Rep Priority = D1 (MetaData "Priority" "System.Posix.Syslog.Priority" "hsyslog-5.0.1-G9cqBXC4EIC74yl4OlPtFN" False) (((C1 (MetaCons "Emergency" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "Alert" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "Critical" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "Error" PrefixI False) (U1 :: * -> *))) :+: ((C1 (MetaCons "Warning" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "Notice" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "Info" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "Debug" PrefixI False) (U1 :: * -> *)))) |
Syslog distinguishes various system facilities. Most applications should
log in USER
.
Kernel | kernel messages |
User | user-level messages (default unless set otherwise) |
mail system | |
News | network news subsystem |
UUCP | UUCP subsystem |
Daemon | system daemons |
Auth | security and authorization messages |
Cron | clock daemon |
LPR | line printer subsystem |
Local0 | reserved for local use |
Local1 | reserved for local use |
Local2 | reserved for local use |
Local3 | reserved for local use |
Local4 | reserved for local use |
Local5 | reserved for local use |
Local6 | reserved for local use |
Local7 | reserved for local use |
Instances
Newtypes for various String/Int values
Refer to RFC 5424 section 6.2 as to the purpose of each.
HostName ByteString | see |
PriVal CInt | see |
ProcessID ByteString | see |
Type aliases
type SeverityMask = [Priority] Source #
Structured Data
Currently unsupported; a placeholder for future use.
data StructuredData Source #
StructuredData | see |
The easy Haskell API to syslog via UDP
initSyslog :: SyslogConfig -> IO SyslogFn Source #
Return a function that logs to syslog via UDP.
{-# LANGUAGE OverloadedStrings #-} import System.Posix.Syslog.UDP main = do syslog <- defaultConfig >>= initSyslog putStrLn "huhu" syslog USER Debug "huhu"
This makes no assumptions about socket connection status or endpoint availability. Any errors while sending are silently ignored.
The type of function returned by initSyslog
.
data SyslogConfig Source #
Configuration options for connecting and logging to your syslog socket.
SyslogConfig | |
|
defaultConfig :: IO SyslogConfig Source #
A convenient default config for connecting to localhost
. Provided for
development/testing purposes.
localhost :: AddrInfo Source #
The default IPv4 address/port for syslog on a local machine. Provided for development/testing purposes.
Common protocols for use with SyslogConfig
type Protocol = PriVal -> UTCTime -> HostName -> AppName -> ProcessID -> Text -> ByteString Source #
Manually constructing syslog UDP packets
:: FormatTime t | |
=> PriVal | see |
-> Maybe t | time of message, converted to
|
-> Maybe HostName | see |
-> Maybe AppName | see |
-> Maybe ProcessID | see |
-> Maybe MessageID | see |
-> Maybe StructuredData | see |
-> Text | see |
-> ByteString |
Construct a syslog UDP packet as dictated by RFC 5424. Note that fields in a syslog packet are whitespace-delineated, so don't allow whitespace in anything but the log message!
:: FormatTime t | |
=> PriVal | see |
-> t | time of message, converted to |
-> HostName | the |
-> AppName | the program name in the |
-> ProcessID | the process identifier in the |
-> Text | the |
-> ByteString |
Construct a syslog UDP packet as dictated by RFC 3164. Note that fields in a syslog packet are whitespace-delineated, so don't allow whitespace in anything but the log message!
rsyslogPacket :: FormatTime t => PriVal -> t -> HostName -> AppName -> ProcessID -> Text -> ByteString Source #
Recommended rsyslog template
RSYSLOG_ForwardFormat
.
Same fields as RFC 3164, but with an RFC 3339 high-precision timestamp.
Miscellaneous utilities
getAppName :: IO AppName Source #
getHostName :: IO HostName Source #
maskedPriVal :: SeverityMask -> Facility -> Severity -> Maybe PriVal Source #
resolveUdpAddress :: Integral n => String -> n -> IO (Maybe AddrInfo) Source #
Obtain an IPv4 AddrInfo
for your SyslogConfig
from a hostname
(or IPv4 address) and port. Sets the address protocol to Datagram
.
rfc3339Timestamp :: FormatTime t => t -> ByteString Source #
An RFC 3339 high-precision timestamp.