module System.Log.Simple.Text (
defaultTimeFormat,
textFmt, text, shortText, msgOnly
) where
import Data.Time
import Text.Format
import System.Log.Simple.Base
defaultTimeFormat ∷ String
defaultTimeFormat = "%_Y-%m-%d %T %z"
textFmt ∷ FormatResult r ⇒ String → String → Converter r
textFmt tmFmt msgFmt (Message tm l comp scope msg) = format msgFmt ~~ args where
args = [
"time" ~% formatTime defaultTimeLocale tmFmt tm,
"level" ~% l,
"component" ~% comp,
"scope" ~% scope,
"message" ~% msg]
text ∷ FormatResult r ⇒ Converter r
text = textFmt defaultTimeFormat "{time:cyan}\t{level}\t{component:magenta}:{scope:green}> {message}"
shortText ∷ FormatResult r ⇒ Converter r
shortText = textFmt defaultTimeFormat "{level}\t{component:magenta}: {message}"
msgOnly ∷ FormatResult r ⇒ Converter r
msgOnly = textFmt defaultTimeFormat "{message}"