fast-logger-2.4.7: 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