h*-j"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR3.2.4  TrustworthySTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred   Trustworthy  fast-logger!Types that can be converted to a   . Instances for types from the text library use a UTF-8 encoding. Instances for numerical types use a decimal encoding.  fast-loggerLog message builder. Use () to append two LogStr in O(1). fast-loggerObtaining the length of  . fast-logger Converting   to S. fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger fast-logger    Safel fast-logger&The type for buffer size of each core. fast-logger&The default buffer size (4,096 bytes). Safe-Inferred fast-logger/Type aliaes for date format and formatted date. Safe-Inferred  fast-loggerThe spec for time based rotation. It supports post processing of log files. Does not delete any logs. Example: timeRotate fname = LogFileTimedRotate (TimedFileLogSpec fname timeFormat sametime compressFile) defaultBufSize where timeFormat = "%FT%H%M%S" sametime = (==) on C8.takeWhile (/=T) compressFile fp = void . forkIO $ callProcess "tar" [ "--remove-files", "-caf", fp <> ".gz", fp ]  fast-loggerbase file path fast-loggertime format to prepend fast-loggerfunction that compares two formatted times as specified by timed_timefmt and decides if a new rotation is supposed to begin fast-loggerprocessing function called asynchronously after a file is added to the rotation fast-loggerThe spec for logging files" fast-logger7Max log file size (in bytes) before requiring rotation.# fast-loggerMax number of rotated log files to keep around before overwriting the oldest one.$ fast-logger&Checking if a log file can be written.% fast-loggerRotating log files.& fast-logger$Prefix file name with formatted time !"#$%& !"#$%& Safe-Inferred" fast-loggerGet date using UnixTime. fast-loggerFormat unix EpochTime date.' fast-loggerMake  action which get cached formatted local time. Use this to avoid the cost of frequently time formatting by caching an auto updating formatted time, this cache update every 1 second. more detail in Control.AutoUpdate( fast-logger!A simple time cache using format "%d%b %Y:%T %z") fast-logger!A simple time cache using format  "%d-%b-%Y %T"'()'()  Safe-Inferred%&* fast-loggerA class for internal loggers.. fast-logger Writting  1 using a buffer in blocking mode. The size of  3 must be smaller or equal to the size of buffer./ fast-logger Writting   using a temporary buffer../*+,-  Safe-Inferred%&0 fast-logger$A non-scale but time-ordered logger.1 fast-logger Creating 0.01 Safe-Inferred%&U2 fast-logger$A scale but non-time-ordered logger.3 fast-logger Creating 2?. The first argument is the number of the internal builders.23 Safe-Inferred"%&4 fast-loggerA set of loggers. The number of loggers is the capabilities of GHC RTS. You can specify it with "+RTS -N". A buffer is prepared for each capability.5 fast-loggerCreating a new 4 using a file.Uses numCapabilties many buffers, which will result in log output that is not ordered by time (see 6).6 fast-loggerCreating a new 4: using a file, using only the given number of capabilites.Giving  mn = Just 1 scales less well on multi-core machines, but provides time-ordered output.7 fast-loggerCreating a new 4 using stdout.8 fast-loggerCreating a new 46 using stdout, with the given number of buffers (see 6).9 fast-loggerCreating a new 4 using stderr.: fast-loggerCreating a new 46 using stderr, with the given number of buffers (see 6).; fast-loggerCreating a new 4. If  is specified to the second argument, stdout is used. Please note that the minimum  is 1.< fast-loggerCreating a new 4 using a FD.= fast-loggerWriting a log message to the corresponding buffer. If the buffer becomes full, the log messages in the buffer are written to its corresponding file, stdout, or stderr.> fast-loggerSame as = but also appends a newline.? fast-loggerFlushing log messages in buffers. This function must be called explicitly when the program is being terminated.Note: Since version 2.1.6, this function does not need to be explicitly called, as every push includes an auto-debounced flush courtesy of the auto-update package. Since version 2.2.2, this function can be used to force flushing outside of the debounced flush calls.@ fast-logger*Renewing the internal file information in 4-. This does nothing for stdout and stderr.A fast-loggerFlushing the buffers, closing the internal file information and freeing the buffers.B fast-loggerReplacing the file path in 4 and returning a new 4 and the old file path.456789:;<@A=>?B456789:;<@A=>?B Safe-Inferred")*!C fast-logger Logger Type.L fast-loggerL pass  to callback and simply log its result. this can be used to customize how to log timestamp.-Usually, one would write a wrapper on top of L, for example: {-# LANGUAGE OverloadedStrings #-} log :: TimedFastLogger -> LogStr -> IO () log logger msg = logger (\time -> toLogStr (show time) <> " " <> msg <> "\n")M fast-loggerM simply log logStr.N fast-logger Initialize a M without attaching timestamp a tuple of logger and clean up action are returned. This type signature should be read as: 2newFastLogger :: LogType -> IO (FastLogger, IO ())This logger uses numCapabilities many buffers, and thus does not provide time-ordered output. For time-ordered output, use O.O fast-loggerLike N, but creating a logger that uses only 1 internal builder. This scales less on multi-core machines and consumes more memory because of an internal queue but provides time-ordered output.P fast-logger version of NQ fast-logger Initialize a M with timestamp attached to each message. a tuple of logger and clean up action are returned.R fast-logger version of newTimeFastLoggerD fast-logger No logging.E fast-loggerLogging to stdout. ) is a buffer size for each capability.F fast-loggerLogging to stderr. ) is a buffer size for each capability.G fast-loggerLogging to a file. ) is a buffer size for each capability.H fast-loggerLogging to a file.  is a buffer size for each capability. File rotation is done on-demand.I fast-loggerLogging to a file.  is a buffer size for each capability. Rotation happens based on check specified in .J fast-loggerLogging with a log and flush action. run flush after log each message.Q fast-loggerHow do we get ? System.Log.FastLogger.Date provide cached formatted time.9MKCDEFGHIJNOPLQR 456789:;<@A=>?B'() !"#%$&MKCDEFGHIJNOPLQR  Safe-Inferred"Q0   0123*+,-./456789:;<@A=>?B!   0123./*+,-             ! " # $ % & ' ()*++,-./00123456789 : ; < = > ? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdcecfghijklmnopqrsrsrtuvuvuwuxuyuzu{u|u}~u~             (fast-logger-3.2.4-1mhwjy5q2uj5yfvN5ArzxISystem.Log.FastLogger.InternalSystem.Log.FastLoggerSystem.Log.FastLogger.TypesSystem.Log.FastLogger.FileSystem.Log.FastLogger.DateSystem.Log.FastLogger.LoggerSet fast-loggerSystem.Log.FastLogger.ImportsSystem.Log.FastLogger.FileIOSystem.Log.FastLogger.LogStrSystem.Log.FastLogger.IOSystem.Log.FastLogger.Write"System.Log.FastLogger.SingleLogger!System.Log.FastLogger.MultiLoggerbaseGHC.Base<>memptybytestring-0.11.5.2 Data.ByteString.Builder.InternalBuilderFDcloseFD openFileFD getStderrFD getStdoutFDwriteRawBufferPtr2FD invalidFD isFDValidToLogStrtoLogStrLogStr logStrLength fromLogStrBufSizeBufferdefaultBufSize getBuffer freeBuffer toBufIOWith TimeFormat FormattedTimeTimedFileLogSpectimed_log_file timed_timefmttimed_same_timeframetimed_post_process FileLogSpeclog_file log_file_sizelog_backup_numbercheckrotate prefixTime newTimeCachesimpleTimeFormatsimpleTimeFormat'Loggers stopLoggerspushLog flushAllLog writeLogStrwriteBigLogStr SingleLoggernewSingleLogger MultiLoggernewMultiLogger LoggerSetnewFileLoggerSetnewFileLoggerSetNnewStdoutLoggerSetnewStdoutLoggerSetNnewStderrLoggerSetnewStderrLoggerSetN newLoggerSetnewFDLoggerSet pushLogStr pushLogStrLn flushLogStrrenewLoggerSet rmLoggerSetreplaceLoggerSetLogType'LogNone LogStdout LogStderrLogFileNoRotateLogFileLogFileTimedRotate LogCallbackLogTypeTimedFastLogger FastLogger newFastLoggernewFastLogger1withFastLoggernewTimedFastLoggerwithTimedFastLoggerData.ByteString.Internal.Type ByteStringBSPS Applicative<*>pure*>liftA2<* Alternativeempty<|>somemanyData.Functor.ConstConstgetConstControl.ApplicativeZipList getZipList WrappedArrow WrapArrow unwrapArrow WrappedMonad WrapMonad unwrapMonad Data.Functor<$>Functorfmap<$<**>liftAliftA3optional Data.Foldableasum MonadPlusmzeromplusMonad>>=return>>Control.Monad.Fail MonadFailfailData.TraversablemapMsequenceforM Control.MonadforeverliftMguardjoin=<<whenliftM2liftM3liftM4liftM5apvoidmapM_forM_ sequence_msumfilterM>=><=< mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_unless<$!>mfilter GHC.IORefIORefatomicModifyIORef' Data.IORefatomicWriteIORefatomicModifyIORefnewIORef readIORef writeIORef mkWeakIORef modifyIORef modifyIORef'nulllengthfoldlfoldrfoldl'foldl1sumproductfoldr1maximumminimumelemGHC.ListzipWith Data.OldListsortBy genericLength maximumBy minimumBygenericReplicate genericTake genericDropgenericSplitAt genericIndexheadgroupgroupByfilterunfoldr transposesortOncycle++concatzipmapunconstaillastinitfoldl1'scanlscanl1scanl'scanrscanr1iterateiterate'repeat replicate takeWhile dropWhiletakedropsplitAtspanbreakreverseandoranyallnotElemlookup concatMap!!zip3zipWith3unzipunzip3find dropWhileEnd stripPrefix elemIndex elemIndices findIndex findIndices isPrefixOf isSuffixOf isInfixOfnubnubBydeletedeleteBy\\unionunionBy intersect intersectBy intersperse intercalate partition mapAccumL mapAccumRinsertinsertByzip4zip5zip6zip7zipWith4zipWith5zipWith6zipWith7unzip4unzip5unzip6unzip7deleteFirstsByinitstails subsequences permutationssort singletonlinesunlineswordsunwords Data.ListisSubsequenceOfghc-prim GHC.TypesIntGHC.IntInt8Int16Int32Int64Data.Semigroup.InternalAnygetAnySumgetSumProduct getProduct Data.MonoidLastgetLastFirstgetFirstMonoidmappendmconcatAltgetAltAllgetAllEndoappEndoDualgetDualApgetApOrderingLTEQGT GHC.ClassesOrdcompare>=<<=>maxminData.OrdDowngetDownclamp comparingGHC.WordWord8WordWord64Word32Word16 byteSwap16 byteSwap32 byteSwap64 bitReverse8 bitReverse16 bitReverse32 bitReverse64 GHC.MaybeMaybeNothingJust Data.MaybemaybeisJust isNothingfromJust fromMaybe maybeToList listToMaybe catMaybesmapMaybe GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexpGHC.Real showSigned showFloat floatToDigitsfromRatGHC.Read lexDigitsNumericreadIntreadBinreadOctreadDecreadHex readFloat readSignedshowInt showEFloat showFFloat showGFloat showFFloatAlt showGFloatAlt showHFloat showIntAtBaseshowHexshowOctshowBin$fToLogStrDouble$fToLogStrFloat$fToLogStrInteger$fToLogStrWord64$fToLogStrWord32$fToLogStrWord16$fToLogStrWord8$fToLogStrWord$fToLogStrInt64$fToLogStrInt32$fToLogStrInt16$fToLogStrInt8 $fToLogStrIntgetTime formatDateIOControl.Exception.Basebracket