co-log-sys-0.1.1.0: src/Colog/Syslog/Message.hs
module Colog.Syslog.Message
( -- * Message type
Message (..)
-- * Lenses
, severity
, content
-- * Formatting
, fmtMessageFlat
) where
import Universum
import Colog.Syslog.Priority (Severity(..))
import Fmt ((|+), (|++|))
import Lens.Micro (Lens', lens)
-- | This Type contains the info strictly REQUIRED by a syslog message
data Message = Message
{ msgSeverity :: !Severity -- ^ message 'Severity'
, msgContent :: !Text -- ^ message content
} deriving (Show)
-- | 'Lens' for a 'Message' severity
severity :: Lens' Message Severity
severity = lens msgSeverity $ \message svr -> message { msgSeverity = svr }
-- | 'Lens' for a 'Message' content
content :: Lens' Message Text
content = lens msgContent $ \message cnt -> message { msgContent = cnt }
-- | Simple formatting function to 'Text'
fmtMessageFlat :: Message -> Text
fmtMessageFlat Message {..} = msgSeverity|++|msgContent|+""