fast-logger-3.2.6: A fast logging system

Safe Haskell | None
Language | Haskell2010

System.Log.FastLogger

Contents

- FastLogger
- Timed FastLogger
- Log messages
- Buffer size
- LoggerSet
- Date cache
- File rotation
- Types

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

- type FastLogger = LogStr -> IO ()
- type LogType = LogType' LogStr
- data LogType' a where
  - LogNone :: LogType' LogStr
  - LogStdout :: BufSize -> LogType' LogStr
  - LogStderr :: BufSize -> LogType' LogStr
  - LogFileNoRotate :: FilePath -> BufSize -> LogType' LogStr
  - LogFile :: FileLogSpec -> BufSize -> LogType' LogStr
  - LogFileTimedRotate :: TimedFileLogSpec -> BufSize -> LogType' LogStr
  - LogCallback :: forall a. (a -> IO ()) -> IO () -> LogType' a
- newFastLogger :: LogType' v -> IO (v -> IO (), IO ())
- newFastLogger1 :: LogType' v -> IO (v -> IO (), IO ())
- withFastLogger :: LogType -> (FastLogger -> IO a) -> IO a
- type TimedFastLogger = (FormattedTime -> LogStr) -> IO ()
- newTimedFastLogger :: IO FormattedTime -> LogType -> IO (TimedFastLogger, IO ())
- withTimedFastLogger :: IO FormattedTime -> LogType -> (TimedFastLogger -> IO a) -> IO a
- data LogStr
- class ToLogStr msg where
  - toLogStr :: msg -> LogStr
- fromLogStr :: LogStr -> ByteString
- logStrLength :: LogStr -> Int
- type BufSize = Int
- defaultBufSize :: BufSize
- module System.Log.FastLogger.LoggerSet
- module System.Log.FastLogger.Date
- module System.Log.FastLogger.File
- module System.Log.FastLogger.Types

# FastLogger

type FastLogger = LogStr -> IO () Source #

`FastLogger` simply log `logStr`.

type LogType = LogType' LogStr Source #

data LogType' a where Source #

Logger Type.

Constructors

LogNone |

Fields

- :: LogType' LogStr

  No logging.

LogStdout |

Fields

- :: BufSize
- -> LogType' LogStr

  Logging to stdout. `BufSize` is a buffer size for each capability.

LogStderr |

Fields

- :: BufSize
- -> LogType' LogStr

  Logging to stderr. `BufSize` is a buffer size for each capability.

LogFileNoRotate |

Fields

- :: FilePath
- -> BufSize
- -> LogType' LogStr

  Logging to a file. `BufSize` is a buffer size for each capability.

LogFile |

Fields

- :: FileLogSpec
- -> BufSize
- -> LogType' LogStr

  Logging to a file. `BufSize` is a buffer size for each capability. File rotation is done on-demand.

LogFileTimedRotate |

Fields

- :: TimedFileLogSpec
- -> BufSize
- -> LogType' LogStr

  Logging to a file. `BufSize` is a buffer size for each capability. Rotation happens based on check specified in `TimedFileLogSpec`.

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 ()) Source #

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 ()) Source #

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.

withFastLogger :: LogType -> (FastLogger -> IO a) -> IO a Source #

`bracket` version of `newFastLogger`

# Timed FastLogger

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

`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 Source #

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 Source #

`bracket` version of `newTimeFastLogger`

# Log messages

data LogStr Source #

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

#### Instances

Instances details

ToLogStr LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: LogStr -> LogStr Source #
Monoid LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods mempty :: LogStr Source # mappend :: LogStr -> LogStr -> LogStr Source # mconcat :: [LogStr] -> LogStr Source #
Semigroup LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods (<>) :: LogStr -> LogStr -> LogStr Source # sconcat :: NonEmpty LogStr -> LogStr Source # stimes :: Integral b => b -> LogStr -> LogStr Source #
IsString LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods fromString :: String -> LogStr Source #
Show LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods showsPrec :: Int -> LogStr -> ShowS Source # show :: LogStr -> String Source # showList :: [LogStr] -> ShowS Source #
Eq LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods (==) :: LogStr -> LogStr -> Bool Source # (/=) :: LogStr -> LogStr -> Bool Source #

class ToLogStr msg where Source #

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 Source #

#### Instances

Instances details

ToLogStr Builder Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Builder -> LogStr Source #
ToLogStr ByteString Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: ByteString -> LogStr Source #
ToLogStr ByteString Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: ByteString -> LogStr Source #
ToLogStr ShortByteString Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: ShortByteString -> LogStr Source #
ToLogStr LogStr Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: LogStr -> LogStr Source #
ToLogStr Int16 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Int16 -> LogStr Source #
ToLogStr Int32 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Int32 -> LogStr Source #
ToLogStr Int64 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Int64 -> LogStr Source #
ToLogStr Int8 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Int8 -> LogStr Source #
ToLogStr Word16 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Word16 -> LogStr Source #
ToLogStr Word32 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Word32 -> LogStr Source #
ToLogStr Word64 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Word64 -> LogStr Source #
ToLogStr Word8 Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Word8 -> LogStr Source #
ToLogStr Text Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Text -> LogStr Source #
ToLogStr Text Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Text -> LogStr Source #
ToLogStr Integer Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Integer -> LogStr Source #
ToLogStr String Source # |
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: String -> LogStr Source #
ToLogStr Double Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Double -> LogStr Source #
ToLogStr Float Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Float -> LogStr Source #
ToLogStr Int Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Int -> LogStr Source #
ToLogStr Word Source # | Since: 2.4.14
Instance details Defined in System.Log.FastLogger.LogStr Methods toLogStr :: Word -> LogStr Source #

fromLogStr :: LogStr -> ByteString Source #

Converting `LogStr` to `ByteString`.

logStrLength :: LogStr -> Int Source #

Obtaining the length of `LogStr`.

# Buffer size

type BufSize = Int Source #

The type for buffer size of each core.

defaultBufSize :: BufSize Source #

The default buffer size (4,096 bytes).

# LoggerSet

module System.Log.FastLogger.LoggerSet

# Date cache

module System.Log.FastLogger.Date

# File rotation

module System.Log.FastLogger.File

# Types

module System.Log.FastLogger.Types