úÎ!M!Iß8      !"#$%&'()*+,-./01234567(c) Galois Inc. 2020kquick@galois.com experimentalPOSIXSafe"#,-.>@ACHSXkH› lumberjack|This type is a Constraint that should be applied to any client function that will perform logging in a monad context. The msg6 is the type of message that will be logged, and the m4 is the monad under which the logging is performed. lumberjack7Each logged output is described by a LogMessage object. lumberjack—The LogType indicates what type of message this is. These are printed on the log line and can be used for filtering different types of log messages. lumberjackwThe Severity indicates the relative importance of the logging message. This can be useful for filtering log messages. lumberjackSAny monad which will support retrieving or adjusting a LogAction must support the  class. lumberjack9The LogAction holds the ability to log a message of type msg% (the second parameter) via a monad m (the first parameter).ÿLogActions are semigroup and monoid combineable, which results in both LogActions being taken (or no action in the case of mempty), and contravariant to allow the msg to be modified via function prior to being logged (as well as Divisible and Decidable). lumberjackvThis invokes the LogAction's logging handler in a monadic context where the logging handler can be retrieved via the  class's  function. lumberjackyEnsures that the LogAction does not fail if the logging operation itself throws an exception (the exception is ignored). lumberjack£The logFilter can be used on a LogAction to determine which messages the LogAction should be invoked for (only those for which the filter function returns True). lumberjackPHelper routine to return an empty LogMessage, whose fields can then be updated. lumberjack8Add the current timestamp to the LogMessage being logged lumberjackÿLog messages can have any number of key/value tags applied to them. This function establishes a new key/value tag pair that will be in effect for the monadic operation passed as the third argument. withLogTag tname tval op = local (adjustLogAction $ addLogTag tname tval) op8 lumberjacknFormat the log message with annotation values designating the different portions of the pretty-printed value.The Pretty class prettye method can be used for generic annotations, but this yields less information for output management.9 lumberjackThe 9Á converts the LogMessage annotations into ANSI terminal styles to add colors and other effects such as bolding to various portions of log messages (for use with prettyprinter-ansi-terminal).  lumberjack·Standard function to convert a LogMessage into Text with ANSI terminal colors and bolding and other styling. This can be used as the default converter for a logger (via contramap).! lumberjack«Standard function for converting a LogMessage into plain Text (no colors or bolding, just text). This can be used as the default converter for a logger (via contramap)." lumberjackÿ(A wrapper for a monadic function call that will log on entry (Debug) and exit (Info) from the function, and note the total amount of time taken during execution of the function. Note that no strictness is applied to the internal monadic operation, so the time taken may be misleading. Like # but needs an explicit  whereas # will retrieve the " from the current monadic context.# lumberjackÿ!A wrapper for a monadic function call that will log on entry (Debug) and exit (Info) from the function, and note the total amount of time taken during execution of the function. Note that no strictness is applied to the internal monadic operation, so the time taken may be misleading.: lumberjack,Internal function implementing the body for " or #$ lumberjackMCalled to output a log message to indicate that some progress has been made.% lumberjackdCalled to output a log message within a Logging monad to indicate that some progress has been made.& lumberjack[This is a helper because the LogMessage normally wants a Text, but show delivers a String.' lumberjackâWhen using a simple IO monad, there is no ability to store a LogAction in the base monad. The client can specify a specific HasLog instance for IO that is appropriate to that client, and that HasLog can optionally use the ' as the D implementation to log pretty messages with ANSI styling to stdout. Yinstance HasLog Env Text IO where getLogAction = return defaultGetIOLogAction ...(  !"#$%&'( ! "#$%&';      !"#$%&'()*+,-./0123456789:;)lumberjack-0.1.0.0-9ZCtqx4za8HLA1Kpo2T7qa LumberjackWithLog LogMessagelogTypelogLevellogTimelogTagslogTextLogTypeProgress FuncEntryFuncExitMiscLogUserOpSeverityDebugInfoWarningError LoggingMonadadjustLogActionHasLog getLogAction LogActionwriteLog writeLogM safeLogAction logFiltermsgWithaddLogActionTime withLogTagcvtLogMessageToANSITermTextcvtLogMessageToPlainTextlogFunctionCalllogFunctionCallM logProgress logProgressMtshowdefaultGetIOLogAction$fPrettyUTCTime$fDecidableLogAction$fDivisibleLogAction$fContravariantLogAction$fMonoidLogAction$fSemigroupLogAction$fPrettySeverity$fPrettyLogType$fPrettyLogMessage$fMonoidLogMessage$fSemigroupLogMessage $fOrdSeverity $fEqSeverity$fShowSeverity $fEqLogType $fShowLogTypeprettyLogMessage termStylelogFunctionCallWith