module Log.Data (
LogLevel(..)
, LogMessage(..)
) where
import Control.DeepSeq
import Data.Aeson
import Data.Text (Text)
import Data.Time
data LogLevel = LogAttention | LogInfo | LogTrace
deriving (Bounded, Eq, Ord, Show)
instance NFData LogLevel
data LogMessage = LogMessage {
lmComponent :: !Text
, lmTime :: !UTCTime
, lmLevel :: !LogLevel
, lmMessage :: !Text
, lmData :: !Value
} deriving (Eq, Show)
instance NFData LogMessage where
rnf LogMessage{..} = rnf lmComponent
`seq` rnf lmTime
`seq` rnf lmLevel
`seq` rnf lmMessage
`seq` rnf lmData