fast-logger-2.4.10: A fast logging system

Safe HaskellNone
LanguageHaskell98

System.Log.FastLogger

Contents

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

Creating a logger set

data LoggerSet Source #

A 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.

newFileLoggerSet :: BufSize -> FilePath -> IO LoggerSet Source #

Creating a new LoggerSet using a file.

newStdoutLoggerSet :: BufSize -> IO LoggerSet Source #

Creating a new LoggerSet using stdout.

newStderrLoggerSet :: BufSize -> IO LoggerSet Source #

Creating a new LoggerSet using stderr.

newLoggerSet :: BufSize -> Maybe FilePath -> IO LoggerSet Source #

Deprecated: Use newFileLoggerSet etc instead

Creating a new LoggerSet. If Nothing is specified to the second argument, stdout is used. Please note that the minimum BufSize is 1.

Buffer size

type BufSize = Int Source #

The type for buffer size of each core.

defaultBufSize :: BufSize Source #

The default buffer size (4,096 bytes).

Renewing and removing a logger set

renewLoggerSet :: LoggerSet -> IO () Source #

Renewing the internal file information in LoggerSet. This does nothing for stdout and stderr.

rmLoggerSet :: LoggerSet -> IO () Source #

Flushing the buffers, closing the internal file information and freeing the buffers.

Log messages

data LogStr Source #

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

logStrLength :: LogStr -> Int Source #

Obtaining the length of LogStr.

Writing a log message

pushLogStr :: LoggerSet -> LogStr -> IO () Source #

Writing 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.

pushLogStrLn :: LoggerSet -> LogStr -> IO () Source #

Same as pushLogStr but also appends a newline.

Flushing buffered log messages

flushLogStr :: LoggerSet -> IO () Source #

Flushing 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.

FastLogger

type FastLogger = LogStr -> IO () Source #

FastLogger simply log logStr.

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.

data LogType Source #

Logger Type.

Constructors

LogNone

No logging.

LogStdout BufSize

Logging to stdout. BufSize is a buffer size

LogStderr BufSize

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

LogFileNoRotate FilePath BufSize

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

LogFile FileLogSpec BufSize

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

LogCallback (LogStr -> IO ()) (IO ())

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

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

Initialize a FastLogger without attaching timestamp a tuple of logger and clean up action are returned.

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

Date cache

File rotation