fast-logger-3.2.5: A fast logging system
Safe HaskellNone
LanguageHaskell2010

System.Log.FastLogger

Description

This module provides a fast logging system which scales on multicore environments (i.e. +RTS -N<x>).

Note: This library does not guarantee correct ordering of log messages when program is run on more than one core thus users should rely more on message timestamps than on their order in the log.

Synopsis

FastLogger

type FastLogger = LogStr -> IO () #

FastLogger simply log logStr.

data LogType' a where #

Logger Type.

Constructors

LogNone 

Fields

LogStdout 

Fields

LogStderr 

Fields

LogFileNoRotate 

Fields

LogFile 

Fields

LogFileTimedRotate 

Fields

LogCallback 

Fields

  • :: forall a. (a -> IO ())
     
  • -> IO ()
     
  • -> LogType' a

    Logging with a log and flush action. run flush after log each message.

newFastLogger :: LogType' v -> IO (v -> IO (), IO ()) #

Initialize a FastLogger without attaching timestamp a tuple of logger and clean up action are returned. This type signature should be read as:

newFastLogger :: LogType -> IO (FastLogger, IO ())

This logger uses numCapabilities many buffers, and thus does not provide time-ordered output. For time-ordered output, use newFastLogger1.

newFastLogger1 :: LogType' v -> IO (v -> IO (), IO ()) #

Like newFastLogger, 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.

Timed FastLogger

type TimedFastLogger = (FormattedTime -> LogStr) -> IO () #

TimedFastLogger pass FormattedTime 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 TimedFastLogger, for example:

{-# LANGUAGE OverloadedStrings #-}

log :: TimedFastLogger -> LogStr -> IO ()
log logger msg = logger (\time -> toLogStr (show time) <> " " <> msg <> "\n")

newTimedFastLogger #

Arguments

:: IO FormattedTime

How do we get FormattedTime? System.Log.FastLogger.Date provide cached formatted time.

-> LogType 
-> IO (TimedFastLogger, IO ()) 

Initialize a FastLogger with timestamp attached to each message. a tuple of logger and clean up action are returned.

withTimedFastLogger :: IO FormattedTime -> LogType -> (TimedFastLogger -> IO a) -> IO a #

bracket version of newTimeFastLogger

Log messages

data LogStr #

Log message builder. Use (<>) to append two LogStr in O(1).

Instances

Instances details
ToLogStr LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: LogStr -> LogStr #

Monoid LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Semigroup LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

IsString LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

fromString :: String -> LogStr #

Show LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Eq LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

(==) :: LogStr -> LogStr -> Bool #

(/=) :: LogStr -> LogStr -> Bool #

class ToLogStr msg where #

Types that can be converted to a LogStr. Instances for types from the text library use a UTF-8 encoding. Instances for numerical types use a decimal encoding.

Methods

toLogStr :: msg -> LogStr #

Instances

Instances details
ToLogStr Builder # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Builder -> LogStr #

ToLogStr ByteString # 
Instance details

Defined in System.Log.FastLogger.LogStr

ToLogStr ByteString # 
Instance details

Defined in System.Log.FastLogger.LogStr

ToLogStr ShortByteString # 
Instance details

Defined in System.Log.FastLogger.LogStr

ToLogStr LogStr # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: LogStr -> LogStr #

ToLogStr Int16 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Int16 -> LogStr #

ToLogStr Int32 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Int32 -> LogStr #

ToLogStr Int64 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Int64 -> LogStr #

ToLogStr Int8 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Int8 -> LogStr #

ToLogStr Word16 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Word16 -> LogStr #

ToLogStr Word32 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Word32 -> LogStr #

ToLogStr Word64 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Word64 -> LogStr #

ToLogStr Word8 #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Word8 -> LogStr #

ToLogStr Text # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Text -> LogStr #

ToLogStr Text # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Text -> LogStr #

ToLogStr Integer #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Integer -> LogStr #

ToLogStr String # 
Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: String -> LogStr #

ToLogStr Double #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Double -> LogStr #

ToLogStr Float #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Float -> LogStr #

ToLogStr Int #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Int -> LogStr #

ToLogStr Word #

Since: 2.4.14

Instance details

Defined in System.Log.FastLogger.LogStr

Methods

toLogStr :: Word -> LogStr #

logStrLength :: LogStr -> Int #

Obtaining the length of LogStr.

Buffer size

type BufSize = Int #

The type for buffer size of each core.

defaultBufSize :: BufSize #

The default buffer size (4,096 bytes).

LoggerSet

Date cache

File rotation

Types