h&* q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM  TrustworthylNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred  Safe  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 . 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   SafeF fast-logger&The type for buffer size of each core. fast-logger&The default buffer size (4,096 bytes). Safe fast-logger Writting  1 using a buffer in blocking mode. The size of  3 must be smaller or equal to the size of buffer. Safe-Inferred"M 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. fast-loggerCreating a new  using a file.Uses numCapabilties many buffers, which will result in log output that is not ordered by time (see ). fast-loggerCreating a new : 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. fast-loggerCreating a new  using stdout.  fast-loggerCreating a new 6 using stdout, with the given number of buffers (see ).! fast-loggerCreating a new  using stderr." fast-loggerCreating a new 6 using stderr, with the given number of buffers (see ).# fast-loggerCreating a new . If  is specified to the second argument, stdout is used. Please note that the minimum  is 1.$ fast-loggerCreating a new  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 -. This does nothing for stdout and stderr.) fast-loggerFlushing the buffers, closing the internal file information and freeing the buffers.* fast-loggerReplacing the file path in  and returning a new  and the old file path. !"#$%&'()* !"#$()%&'* Safe-Inferred+  !"#$%&'()*    Safe-InferredG, fast-logger/Type aliaes for date format and formatted date.+,+,Safe - 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 path0 fast-loggertime format to prepend1 fast-loggerfunction that compares two formatted times as specified by timed_timefmt and decides if a new rotation is supposed to begin2 fast-loggerprocessing function called asynchronously after a file is added to the rotation3 fast-loggerThe spec for logging files6 fast-logger7Max log file size (in bytes) before requiring rotation.7 fast-loggerMax number of rotated log files to keep around before overwriting the oldest one.8 fast-logger&Checking if a log file can be written.9 fast-loggerRotating log files.: fast-logger$Prefix file name with formatted time-./0123456789:34567-./01289: Safe-Inferred"9 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-logger Logger Type.G fast-loggerG 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 G, for example: {-# LANGUAGE OverloadedStrings #-} log :: TimedFastLogger -> LogStr -> IO () log logger msg = logger (\time -> toLogStr (show time) <> " " <> msg <> "\n")H fast-loggerH simply log logStr.I fast-logger Initialize a H 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 J.J fast-loggerLike I, but creating a logger that uses only 1 capability. This scales less well on multi-core machines, but provides time-ordered output.K fast-logger version of IL fast-logger Initialize a H with timestamp attached to each message. a tuple of logger and clean up action are returned.M fast-logger version of newTimeFastLogger? fast-logger No logging.@ fast-loggerLogging to stdout. ) is a buffer size for each capability.A fast-loggerLogging to stderr. ) is a buffer size for each capability.B fast-loggerLogging to a file. ) is a buffer size for each capability.C fast-loggerLogging to a file.  is a buffer size for each capability. File rotation is done on-demand.D fast-loggerLogging to a file.  is a buffer size for each capability. Rotation happens based on check specified in -.E fast-loggerLogging with a log and flush action. run flush after log each message.L fast-loggerHow do we get ,? System.Log.FastLogger.Date provide cached formatted time.9  !"#$%&'()*+,-210./3764589:;<=>?@ABCDEFGHIJKLMHF>?@ABCDEIJKGLM           ! " # $ % & & ' ( )*+,-./0123456789:;;<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXY Z [\ [] ^ _` a bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by z { | } ~                                        _ _ _ _ _ _ _ _ _ _ _ _ _ _                                                                                                                                                          b b b         [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [                                             (fast-logger-3.1.2-GxnYJtfiAdaLruxGgUzaviSystem.Log.FastLogger.InternalSystem.Log.FastLogger.LoggerSetSystem.Log.FastLogger.TypesSystem.Log.FastLogger.FileSystem.Log.FastLogger.DateSystem.Log.FastLoggerSystem.Log.FastLogger.ImportsSystem.Log.FastLogger.FileIOSystem.Log.FastLogger.LogStrSystem.Log.FastLogger.IOSystem.Log.FastLogger.LoggerbaseGHC.Base<>memptybytestring-0.11.3.1 Data.ByteString.Builder.InternalBuilderFDcloseFD openFileFD getStderrFD getStdoutFDwriteRawBufferPtr2FD invalidFD isFDValidToLogStrtoLogStrLogStr logStrLength fromLogStrBufSizeBufferdefaultBufSize getBuffer freeBuffer toBufIOWithLogger newLoggerpushLogflushLog LoggerSetnewFileLoggerSetnewFileLoggerSetNnewStdoutLoggerSetnewStdoutLoggerSetNnewStderrLoggerSetnewStderrLoggerSetN newLoggerSetnewFDLoggerSet pushLogStr pushLogStrLn flushLogStrrenewLoggerSet rmLoggerSetreplaceLoggerSet TimeFormat FormattedTimeTimedFileLogSpectimed_log_file timed_timefmttimed_same_timeframetimed_post_process FileLogSpeclog_file log_file_sizelog_backup_numbercheckrotate prefixTime newTimeCachesimpleTimeFormatsimpleTimeFormat'LogType'LogNone LogStdout LogStderrLogFileNoRotateLogFileLogFileTimedRotate LogCallbackLogTypeTimedFastLogger FastLogger newFastLoggernewFastLogger1withFastLoggernewTimedFastLoggerwithTimedFastLogger++GHC.Listfilterzipmap Control.Monadguardjoin GHC.FloatFloatingtanhtansqrtsinhsinpilogBaselog1pexplog1plog1mexplogexpm1expcoshcosatanhatanasinhasinacosh**acosMonad>>>>=returnFunctor<$fmapghc-prim GHC.ClassesOrd<<=>maxmincompare>=Control.Monad.Fail MonadFailfail ApplicativeliftA2<**><*>pure Data.Foldablesumproductminimummaximumfoldr1foldl1foldl'elemfoldrfoldlnulllengthData.TraversablemapMsequenceMonoidmconcatmappend GHC.TypesIntGHC.IntInt8Int16Int32Int64 GHC.MaybeMaybeNothingJustOrderingGTLTEQWordGHC.WordWord8Word16Word32Word64 GHC.IORefatomicModifyIORef' zipWithM_zipWithMunless replicateM_ replicateMmfilter mapAndUnzipMforeverfoldM_foldMfilterM>=><=<<$!> Data.ListisSubsequenceOf mapAccumR mapAccumLforMControl.ApplicativeZipList getZipList WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowoptional Data.IORef modifyIORef' modifyIORef mkWeakIORefatomicWriteIORefatomicModifyIORefIORef writeIORef readIORefnewIORefData.Functor.ConstConstgetConst sequence_ornotElemmsum minimumBy maximumBymapM_forM_find concatMapconcatasumanyandall Data.OldListzipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4wordsunzip7unzip6unzip5unzip4unwordsunlinesunionByunionunfoldr transposetails subsequences stripPrefixsortOnsortBysort singleton permutations partitionnubBynublines isSuffixOf isPrefixOf isInfixOf intersperse intersectBy intersect intercalateinsertByinsertinitsgroupBygroup genericTakegenericSplitAtgenericReplicate genericLength genericIndex genericDrop findIndices findIndex elemIndices elemIndex dropWhileEnddeleteFirstsBydeleteBydelete\\ Data.MonoidLastgetLastFirstgetFirstApgetApData.Semigroup.InternalSumgetSumProduct getProductEndoappEndoDualgetDualAnygetAnyAltgetAltAllgetAllData.OrdDowngetDown comparingclampNumericshowOct showIntAtBaseshowIntshowHex showHFloat showGFloatAlt showGFloat showFFloatAlt showFFloat showEFloatshowBin readSignedreadOctreadIntreadHex readFloatreadDecreadBinGHC.Read lexDigits showFloatfromRat floatToDigits byteSwap64 byteSwap32 byteSwap16 bitReverse8 bitReverse64 bitReverse32 bitReverse16GHC.Real showSignedzipWith3zipWithzip3unzip3unzipuncons takeWhiletaketailsplitAtspanscanr1scanrscanl1scanl'scanlreverse replicaterepeatlookuplastiterate'iterateinitheadfoldl1' dropWhiledropcyclebreak!! Data.Maybe maybeToListmaybemapMaybe listToMaybe isNothingisJust fromMaybefromJust catMaybes Data.Functorvoid<$> MonadPlusmplusmzero Alternativesomemany<|>emptywhenliftM5liftM4liftM3liftM2liftMliftA3liftAap=<<<**>Data.ByteString.Internal ByteStringBSPS$fToLogStrDouble$fToLogStrFloat$fToLogStrInteger$fToLogStrWord64$fToLogStrWord32$fToLogStrWord16$fToLogStrWord8$fToLogStrWord$fToLogStrInt64$fToLogStrInt32$fToLogStrInt16$fToLogStrInt8 $fToLogStrInt writeLogStrgetTime formatDateIOControl.Exception.Basebracket