Safe Haskell | None |
---|---|
Language | Haskell98 |
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.
- data LoggerSet
- newFileLoggerSet :: BufSize -> FilePath -> IO LoggerSet
- newStdoutLoggerSet :: BufSize -> IO LoggerSet
- newStderrLoggerSet :: BufSize -> IO LoggerSet
- newLoggerSet :: BufSize -> Maybe FilePath -> IO LoggerSet
- type BufSize = Int
- defaultBufSize :: BufSize
- renewLoggerSet :: LoggerSet -> IO ()
- rmLoggerSet :: LoggerSet -> IO ()
- data LogStr
- class ToLogStr msg where
- fromLogStr :: LogStr -> ByteString
- logStrLength :: LogStr -> Int
- pushLogStr :: LoggerSet -> LogStr -> IO ()
- pushLogStrLn :: LoggerSet -> LogStr -> IO ()
- flushLogStr :: LoggerSet -> IO ()
- type FastLogger = LogStr -> IO ()
- type TimedFastLogger = (FormattedTime -> LogStr) -> IO ()
- data LogType
- = LogNone
- | LogStdout BufSize
- | LogStderr BufSize
- | LogFileNoRotate FilePath BufSize
- | LogFile FileLogSpec BufSize
- | LogCallback (LogStr -> IO ()) (IO ())
- newFastLogger :: LogType -> IO (FastLogger, IO ())
- withFastLogger :: LogType -> (FastLogger -> IO a) -> IO a
- newTimedFastLogger :: IO FormattedTime -> LogType -> IO (TimedFastLogger, IO ())
- withTimedFastLogger :: IO FormattedTime -> LogType -> (TimedFastLogger -> IO a) -> IO a
- module System.Log.FastLogger.Date
- module System.Log.FastLogger.File
Creating a logger set
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.
Buffer size
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
Log message builder. Use (<>
) to append two LogStr in O(1).
fromLogStr :: LogStr -> ByteString Source #
Converting LogStr
to ByteString
.
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.
Logger Type.
LogNone | No logging. |
LogStdout BufSize | Logging to stdout.
|
LogStderr BufSize | Logging to stdout.
|
LogFileNoRotate FilePath BufSize | Logging to a file.
|
LogFile FileLogSpec BufSize | Logging to a file.
|
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.
withFastLogger :: LogType -> (FastLogger -> IO a) -> IO a Source #
bracket
version of newFastLogger
:: IO FormattedTime | How do we get |
-> 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
module System.Log.FastLogger.Date
File rotation
module System.Log.FastLogger.File