h&9      !"#$%&'()*+,-./012345678(c) Galois Inc. 2020kquick@galois.com experimentalPOSIX Safe-Inferred"%&/01g9 lumberjack?Normal LogMessage formatting uses prettyprinter output with a 9 annotation type which assigns different annotations to different parts of the log message. This is achieved by calling :.Alternatively, the  class pretty method can be used to get log message formatting for generic annotation types, but the different parts of the message will not be distinguished via annotation values. lumberjack7Each logged output is described by a LogMessage object. lumberjackThe 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.  lumberjackThe Severity indicates the relative importance of the logging message. This can be useful for filtering log messages. lumberjackAn instance of the  class can be defined for the base monadic logging action to allow adjusting that logging action. This class can only be instantiated (and only needs to be instantiated) for the base message type; all other message types will use contramapping to convert their message type to the  base message type. lumberjackThis 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. lumberjackAny monad which will support retrieving a LogAction from the Monad's environment should 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). lumberjackThis obtains the  from the current monad's environment to use for outputting the log message. Most code will use this function. lumberjackEnsures that the LogAction does not fail if the logging operation itself throws an exception (the exception is ignored). lumberjackThe 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). lumberjackHelper routine to return an empty LogMessage, whose fields can then be updated. lumberjackThis operator is a convenient infix operator for logging a Text message. This is especially useful when used in conjunction with the OverloadedStrings language pragma:%warning|# "This is your last warning"error|# "Failure has occurred" lumberjack8Add the current timestamp to the LogMessage being logged  lumberjackLog 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) op: lumberjackFormat the log message with annotation values designating the different portions of the pretty-printed value.The  class pretty method can be used for generic annotations, but this yields less information for output management.; lumberjackThe ; 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 " rendering function to convert a  into < with ANSI terminal colors and bolding and other styling. This can be used as the default converter for a logger (via contramap)." lumberjack Standard & rendering function for converting a  into plain < (no colors or other highlighting). This can be used as the default converter for a logger (via contramap).# lumberjack;A wrapper for a function call that will call the provided  with a & log on entry to the function and an  log on exit from the function. The total amount of time taken during execution of the function will be included in the exit log message. No strictness is applied to the invoked monadic operation, so the time taken may be misleading. Like $ but needs an explicit  whereas $ will retrieve the # from the current monadic context.$ lumberjack0A wrapper for a monadic function call that will  log on entry to and  log on exit from the function. The exit log will also note the total amount of time taken during execution of the function. Be advised 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 $% lumberjackCalled to output a log message to indicate that some progress in the current activity has been made.& lumberjack(Called to output a log message within a  monad to indicate that some progress in the current activity has been made.' lumberjackThis is a helper function. The LogMessage normally wants a Text, but show delivers a String, so '' can be used to get the needed format.( lumberjackWhen 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  implementation to log pretty messages with ANSI styling to stdout. instance HasLog Env Text IO where getLogAction = return defaultGetIOLogAction)  !"#$%&'()   "!#$%&'(0>      !"#$%&'()*+,-./0123456789:;<=>?@A)lumberjack-1.0.2.0-1beKWjFRv6r7sj4DEGLebI Lumberjack PrettyprinterPretty LogMessagelogTypelogLevellogTimelogTagslogTextLogTypeProgress FuncEntryFuncExitMiscLogUserOpSeverityDebugInfoWarningError LoggingMonadadjustLogActionWithLogHasLog getLogAction LogActionwriteLog writeLogM safeLogAction logFiltermsgWith|#addLogActionTime withLogTagcvtLogMessageToANSITermTextcvtLogMessageToPlainTextlogFunctionCalllogFunctionCallM logProgress logProgressMtshowdefaultGetIOLogAction$fPrettyUTCTime$fDecidableLogAction$fDivisibleLogAction$fContravariantLogAction$fMonoidLogAction$fSemigroupLogAction$fPrettySeverity$fPrettyLogType$fPrettyLogMessage$fMonoidLogMessage$fSemigroupLogMessage $fEqLogType $fShowLogType $fOrdSeverity $fEqSeverity$fShowSeverity PrettyLogAnnprettyLogMessage termStyle text-1.2.5.0Data.Text.InternalTextlogFunctionCallWith