module System.Log.HTML (
defaultTimeLocale,
htmlFmt, html
) where
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time
import System.Locale
import System.Log.Base
import System.Log.Text
htmlFmt :: String -> String -> Converter Text
htmlFmt fmt title = Converter header c where
c (Message tm l p msg) = T.unlines [
T.pack $ "
",
T.pack $ "" ++ formatTm tm ++ "",
T.pack $ "" ++ classMsg l ++ ".",
T.concat [T.pack "", T.intercalate (T.pack "/") p, T.pack ">"],
msg,
T.pack "
"]
typeClass Trace = "trace"
typeClass Debug = "except debug"
typeClass Info = "div1 except info"
typeClass Warning = "div0 except warning"
typeClass Error = "div0 except error"
typeClass Fatal = "div0 critical"
classMsg Trace = "Trace info"
classMsg Debug = "Debug info"
classMsg Info = "Information"
classMsg Warning = "Warning"
classMsg Error = "Error"
classMsg Fatal = "Critical error"
formatTm tm = formatTime defaultTimeLocale fmt tm
header = T.unlines $ map T.pack [
"",
"",
"",
"",
"" ++ title ++ "",
"",
"",
"",
"",
"",
"" ++ title ++ "
"]
html :: String -> Converter Text
html = htmlFmt defaultTimeFormat