!h5af      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeSafe Ilog4hs" also known as severity, a higher  means a bigger f.#There are 5 common severity levels: DEBUGLevel 10INFOLevel 20WARNLevel 30ERRORLevel 40FATALLevel 50:set -XOverloadedStrings"DEBUG" :: LevelDEBUG"DEBUG" == (Level 10)TrueSafe log4hs is just a name.Safe"7d|log4hsA " represents an event being logged.rs are created every time something is logged. They contain all the information related to the event being logged.It includes the main message as well as information such as when the record was created, the source line where the logging call was made.! can be formatted into string by   from vformat package, see g for more information.ACurrently, the useful attributes in a LogRecord are described by: ' logger name of the logger, see 3 level logging level for the message, see  message the main message passed to logv debug info .. pathname full pathname of the source file where the logging call was issued (if available) filename filename portion of pathname pkgname package name where the logging call was issued (if available) modulename module name (e.g. Main, Logging.Types) lineno source line number where the logging call was issued (if available) asctime h/ when the LogRecord was created utctime i when the LogRecord was created created timestamp when the LogRecord was created msecs millisecond portion of the creation time Format examples:  "{message}" "{logger} {level}: {message}" "{logger:<20.20s} {level:<8s}: {message}" "{asctime:%Y-%m-%dT%H:%M:%S%6Q%z} - {level} - {logger}] {message}"    Safe log4hs/A class represents a common trait of filtering s Safe"#("log4hsList of Filterlog4hs-s are used to perform arbitrary filtering of s.Sinks and Handlers can optionally use  to filter records as desired. It allows events which are below a certain point in the sink hierarchy. For example, a filter initialized with A.B& will allow events logged by loggers A.B, A.B.C, A.B.C.D, A.B.D etc. but not A.BB, B.A.BH etc. If initialized name with the empty string, all events are passed. None &'=>?@Ak,_log4hs5A type class that abstracts the characteristics of a (Note: Locking is not necessary, because  # has done it on handle operations.log4hsThe D type is the root of the handler type hierarchy. It holds the real  instance None, None"#7d.log4hsSA handler type which writes logging records, appropriately formatted, to a stream. $!"#None"#d=%log4hs%% represents a single logging channel.iA "logging channel" indicates an area of an application. Exactly how an "area" is defined is up to the application developer. Since an application can have any number of areas, logging channels are identified by a unique string. Application areas can be nested (e.g. an area of "input processing" might include sub-areas "read CSV files", "read XLS files" and "read Gnumeric files"). To cater for this natural nesting, channel names are organized into a namespace hierarchy where levels are separated by periods, much like the Haskell module namespace. So in the instance given above, channel names might be Input for the upper level, and  Input.Csv,  Input.Xls and  Input.GnuJ for the sub-levels. There is no arbitrary limit to the depth of nesting.(Note: The namespaces are case sensitive.,log4hsDIt will pop up until root or the ancestor's propagation is disabled%&'()*+,None?-log4hs There is under normal circumstances7 just one Manager, which holds the hierarchy of sinks.-./102Safe? 3456789:;< 3456789:;<Safe@]jklmnopqSafe@None"#7dCa=log4hsxA handler type which writes logging records, appropriately formatted, to a file, it will rotate when file is too large.UNTESTED Since 0.3.0 =>F?B@ACDENone"#7dEFGlog4hsQA handler type which writes logging records, appropriately formatted, to a file.GHNILJKMNoneE $!"#=>F?B@ACDEGHNILJKMNoneF4E   $!"#%&'()*+,-./102=>F?B@ACDEGHNILJKME   $!"#GHNILJKM=>F?B@ACDE%&'()*+,-./102None"#XdkQ>Olog4hsRun a logging environment.EYou should always write you application inside a logging environment. @rename "main" function to "originMain" (or whatever you call it)write "main" as below /main :: IO () main = run manager originMain ...rlog4hsyLow-level logging routine which creates a LogRecord and then calls all the handlers of this logger to handle the record.Plog4hsA  bound to sQlog4hsA  bound to tRlog4hs#Default root sink which is used by  jsonToManager when root is missed.You can use it when you make - manually.OrPQRNone[DSlog4hs(Log "message" with the severity "level".The missing type signature: u m =>  ->  -> v -> m ()Tlog4hs'Log "message" with a specific severity.The missing type signature: u m =>  -> v -> m ()Ulog4hs'Log "message" with a specific severity.The missing type signature: u m =>  -> v -> m ()Vlog4hs'Log "message" with a specific severity.The missing type signature: u m =>  -> v -> m ()Wlog4hs'Log "message" with a specific severity.The missing type signature: u m =>  -> v -> m ()Xlog4hs'Log "message" with a specific severity.The missing type signature: u m =>  -> v -> m ()STUVWXNone"=?Xdk[None^dlog4hs$Run a logging environment from JSON w.A combinator of O and xA combinator of e and OSee elog4hsMake a - from JSON wDecode  into -See de(c) 2019 Version CloudBSD3 Jorah Gao <log4hs@version.cloud> experimentalportableNone`Q   $!"#%&'()*+,-./102=>F?B@ACDEGHNILJKMOPQRSTUVWXde deOPQRSTUVWXy !"#$%&'()*+ , - . / / 0 1 2 3 4 5 6 7 7889:;<==>?@ABCDDEFGHIJKLMNOPQRSSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~%log4hs-0.3.1.0-12oCcNP9JHD90QcG2CDc85 Logging.Types Logging.UtilsLogging Logging.AesonLogging.Types.LevelLogging.Types.LoggerLogging.Types.RecordTextFormatLogging.Types.Class.FilterableLogging.Types.FilterLogging.Types.Class.HandlerGHC.IOHandleLogging.Types.Class$Logging.Types.Handlers.StreamHandlerLogging.Types.SinkLogging.Types.Manager Paths_log4hsSystem.IO.Extra*Logging.Types.Handlers.RotatingFileHandler"Logging.Types.Handlers.FileHandlerLogging.Types.HandlersLogging.Internal Logging.THLogging.DeprecatedAesonValueLevelLogger LogRecord$sel:logger:LogRecord$sel:level:LogRecord$sel:message:LogRecord$sel:pathname:LogRecord$sel:filename:LogRecord$sel:pkgname:LogRecord$sel:modulename:LogRecord$sel:lineno:LogRecord$sel:asctime:LogRecord$sel:utctime:LogRecord$sel:created:LogRecord$sel:msecs:LogRecord FilterablefilterFiltererFilterHandleropenemitclosehandle fromHandler toHandler SomeHandler StreamHandler$sel:level:StreamHandler$sel:filterer:StreamHandler$sel:formatter:StreamHandler$sel:stream:StreamHandlerSink$sel:logger:Sink$sel:level:Sink$sel:filterer:Sink$sel:handlers:Sink$sel:disabled:Sink$sel:propagate:SinkManagerrootsinksdisabledcatchUncaughtException addZonedTime diffZonedTimezonedTimeToPOSIXSeconds timestampseconds milliseconds microseconds openLogFile rotateFilemodifyBaseNameRotatingFileHandler$sel:level:RotatingFileHandler!$sel:filterer:RotatingFileHandler"$sel:formatter:RotatingFileHandler$sel:file:RotatingFileHandler!$sel:encoding:RotatingFileHandler!$sel:maxBytes:RotatingFileHandler$$sel:backupCount:RotatingFileHandler$sel:stream:RotatingFileHandler FileHandler$sel:level:FileHandler$sel:filterer:FileHandler$sel:formatter:FileHandler$sel:file:FileHandler$sel:encoding:FileHandler$sel:stream:FileHandlerrun stderrHandler stdoutHandler defaultRootlogvdebuginfowarnerrorfatal $fFromJSON->$fFromJSONSink $fFromJSON->0 $fFromJSONIO $fFromJSONIO0 $fFromJSONIO1$fFromJSONStreamHandler$fFromJSONFormat1$fFromJSONFilter$fFromJSONLevel $fFromJSONIO2runJson jsonToManagerghc-prim GHC.TypesInt&vformat-0.9.1.0-Gaidtw8cgJ4BFsL9WNwrss Text.Formatformat1 time-1.8.0.2&Data.Time.LocalTime.Internal.ZonedTime ZonedTime Data.Time.Clock.Internal.UTCTimeUTCTimeversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamelogbaseGHC.IO.Handle.FDstderrstdoutControl.Monad.IO.ClassMonadIOGHC.BaseString$aeson-1.4.6.0-1XnxcetEtfUG8O3EDchcasData.Aeson.Types.InternalData.Aeson.Types.FromJSONfromJSON