!yc5G      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF  Trustworthylm ?GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safelm P Safe=?lm  fast-logger!Types that can be converted to a   . Instances for types from the textU 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   Safelm fast-logger&The type for buffer size of each core. fast-logger&The default buffer size (4,096 bytes). Safelm. fast-logger Writting  1 using a buffer in blocking mode. The size of  3 must be smaller or equal to the size of buffer.Safelm-  fast-loggerA set of loggers. The number of loggers is the capabilities of GHC RTS. You can specify it with "+RTS -N<x>". A buffer is prepared for each capability. fast-loggerCreating a new  using a file. fast-loggerCreating a new  using stdout. fast-loggerCreating a new  using stderr. fast-loggerCreating a new . If Y 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-loggeruFlushing 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-loggerWFlushing 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.  !"#$ "# !$Safelm.%  !"#$  Safelm0& fast-logger/Type aliaes for date format and formatted date.%&%&SafelmB| ' fast-loggeroThe 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 (/=Tv) 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-loggerOprocessing function called asynchronously after a file is added to the rotation- fast-loggerThe spec for logging files0 fast-logger7Max log file size (in bytes) before requiring rotation.1 fast-loggerQMax number of rotated log files to keep around before overwriting the oldest one.2 fast-logger&Checking if a log file can be written.3 fast-loggerRotating log files.4 fast-logger$Prefix file name with formatted time'()*+,-./01234-./01'()*+,234NonelmJ' fast-loggerGet date using UnixTime. fast-loggerFormat unix EpochTime date.5 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.AutoUpdate6 fast-logger!A simple time cache using format "%d%b %Y:%T %z"7 fast-logger!A simple time cache using format  "%d-%b-%Y %T"567567None&'lmb 8 fast-logger Logger Type.A fast-loggerA 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 A, for example: {-# LANGUAGE OverloadedStrings #-} log :: TimedFastLogger -> LogStr -> IO () log logger msg = logger (\time -> toLogStr (show time) <> " " <> msg <> "\n")B fast-loggerB simply log logStr.C fast-logger Initialize a By 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 ())D fast-logger version of CE fast-logger Initialize a B^ with timestamp attached to each message. a tuple of logger and clean up action are returned.F fast-logger version of newTimeFastLogger9 fast-logger No logging.: fast-loggerLogging to stdout. ) is a buffer size for each capability.; fast-loggerLogging to stderr. ) is a buffer size for each capability.< fast-loggerLogging to a file. ) is a buffer size for each capability.= fast-loggerLogging to a file. M is a buffer size for each capability. File rotation is done on-demand.> fast-loggerLogging to a file. ] is a buffer size for each capability. Rotation happens based on check specified in '.? fast-loggerGLogging with a log and flush action. run flush after log each message.E fast-loggerHow do we get &? System.Log.FastLogger.Date provide cached formatted time.4  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFB@89:;<=>?CDAEF             ! " # $ $ % & '()*+,-./01234556789::;<=>?@ABCDEFGHIJKLMNOPQR S TU TV W XY Z [\ [] [^ [_ [` [a [b [c [d [e [f [g [h [i [j [k [l [m [n [o [p [q [r s t u v w x y z{|}{|~{|{|{|{|{|{|   {       {{{{{     X X X X X X X X X X X X X X                                                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < => =? =? @A @B @C @D @E @F @G @H @I @J @K @L @M @N @O @P QR [S [T [U V W X YZ Y[ \] T^ T_ T` Ta Tb Tc Td Te Tf Tg Th Ti Tj Tk Tl Tm Tn To Tp Tq Tr Ts Tt Tu Tv Tw Tx Ty Tz T{ T| }~ } } } } } } } }                                 { (fast-logger-3.0.2-H84bEP5S4V292gt2vLGb8dSystem.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.10.8.2 Data.ByteString.Builder.InternalBuilderFDcloseFD openFileFD getStderrFD getStdoutFDwriteRawBufferPtr2FDToLogStrtoLogStrLogStr logStrLength fromLogStrBufSizeBufferdefaultBufSize getBuffer freeBuffer toBufIOWithLogger newLoggerpushLogflushLog LoggerSetnewFileLoggerSetnewStdoutLoggerSetnewStderrLoggerSet newLoggerSet 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 newFastLoggerwithFastLoggernewTimedFastLoggerwithTimedFastLogger++GHC.Listfilterzipmap Control.Monadguardjoin GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexpMonad>>=>>returnfailFunctorfmap<$ghc-prim GHC.ClassesOrd>=minmax><compare<= Applicativepure<*>*>liftA2<* Data.Foldablefoldrnulllengthfoldlfoldl'foldl1sumproductfoldr1maximumminimumelemData.TraversablemapMsequenceMonoidmappendmconcat GHC.TypesIntGHC.IntInt8Int16Int32Int64 GHC.MaybeMaybeNothingJustOrderingLTEQGTWordGHC.WordWord8Word16Word32Word64 Data.IORefatomicModifyIORef'mfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM Data.ListisSubsequenceOf mapAccumR mapAccumLforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListatomicWriteIORefatomicModifyIORef modifyIORef' modifyIORef mkWeakIORef GHC.IORef writeIORef readIORefnewIORefIORefData.Functor.ConstConstgetConstfindnotElem minimumBy maximumByallanyorand concatMapconcatmsum sequence_forM_mapM_ Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.InternalDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt Data.OldListunwordswordsunlineslinesunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEndData.Ord comparingDownNumericshowOctshowHex showIntAtBase showHFloat showGFloatAlt showFFloatAlt showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadIntGHC.Read lexDigitsfromRat floatToDigits showFloat byteSwap64 byteSwap32 byteSwap16 Data.Functorvoid<$>GHC.Real showSignedunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiterate'iteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailunconshead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplusData.ByteString.Internal ByteStringPS$fToLogStrDouble$fToLogStrFloat$fToLogStrInteger$fToLogStrWord64$fToLogStrWord32$fToLogStrWord16$fToLogStrWord8$fToLogStrWord$fToLogStrInt64$fToLogStrInt32$fToLogStrInt16$fToLogStrInt8 $fToLogStrInt writeLogStrnewFDLoggerSetgetTime formatDateIOControl.Exception.Basebracket