fast-logger-2.4.5: 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>).

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