{-# LANGUAGE DuplicateRecordFields #-}

module Logging.Types.Record ( LogRecord(..) ) where

import           Data.Time.LocalTime

import           Logging.Types.Level
import           Logging.Types.Logger


-- |A 'LogRecord' represents an event being logged.
--
-- 'LogRecord's are created every time something is logged. They
-- contain all the information related to the event being logged.
--
-- It includes the main message as well as information such as
-- when the record was created, the source line where the logging call was made.
--
data LogRecord = LogRecord { logger      :: Logger
                           , level       :: Level
                           , message     :: String
                           , filename    :: String
                           , packagename :: String
                           , modulename  :: String
                           , lineno      :: Int
                           , created     :: ZonedTime
                           }