-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Parsing hslogger-produced logs.
--
@package hslogger-reader
@version 1.0.0
-- | Generate a parser for logs produced by the hslogger package,
-- supporting arbitrary formatting strings (see
-- System.Log.Formatter). Currently, this package does provide
-- support for custom-defined formatters.
--
-- logMessageParser will generate a parser for a LogMessage
-- given a format string (such "[$utcTime $loggername $prio] $msg"
-- ) and a parser for your logger names. This can then be used to
-- read logs line-by-line, potentially in constant memory, from disk. See
-- the accompanying executable for an example of this.
module System.Log.Reader
data LogMessage
LogMessage :: Maybe Text -> Maybe Text -> Maybe Priority -> Maybe Int -> Maybe Int -> Maybe ZonedTime -> LogMessage
message :: LogMessage -> Maybe Text
loggerName :: LogMessage -> Maybe Text
priority :: LogMessage -> Maybe Priority
threadId :: LogMessage -> Maybe Int
processId :: LogMessage -> Maybe Int
timestamp :: LogMessage -> Maybe ZonedTime
type FormatString = Text
-- | Build a parser for a LogMessage from a format string, as
-- described by the hslogger package.
logMessageParser :: FormatString -> Parser Text -> Either String (Parser LogMessage)
-- | As logMessageParser, but provide a custom time format for
-- parsing "$time" and "$utcTime" formatters.
-- Compatible with hslogger's tfLogFormatter function.
tfLogMessageParser :: FormatString -> Parser Text -> Parser ZonedTime -> Either String (Parser LogMessage)
-- | Parse time format string "%F %X %Z" with
-- defaultTimeLocale.
zonedTimeParser :: Parser ZonedTime
instance Show LogMessage
instance Show Instruction