Copyright | Copyright (C) 2004-2011 John Goerzen |
---|---|
License | BSD3 |
Maintainer | John Goerzen <jgoerzen@complete.org> |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Haskell Logging Framework, Primary Interface
Written by John Goerzen, jgoerzen@complete.org
This module is a modification of System.Log.Logger of hslogger
library. Unless proper description is written here, please use the
original documentation available on hackage/hslogger.
- data Logger
- data Severity
- logM :: MonadIO m => LoggerName -> Severity -> Text -> m ()
- logMCond :: MonadIO m => LoggerName -> Severity -> Text -> (LogHandlerTag -> Bool) -> m ()
- removeAllHandlers :: MonadIO m => m ()
- getLogger :: MonadIO m => LoggerName -> m Logger
- getRootLogger :: MonadIO m => m Logger
- rootLoggerName :: LoggerName
- addHandler :: LogHandler a => a -> Logger -> Logger
- removeHandler :: Logger -> Logger
- setHandlers :: LogHandler a => [a] -> Logger -> Logger
- getLevel :: Logger -> Maybe Severities
- setLevel :: Severities -> Logger -> Logger
- clearLevel :: Logger -> Logger
- setSeverities :: MonadIO m => LoggerName -> Severities -> m ()
- setSeveritiesMaybe :: MonadIO m => LoggerName -> Maybe Severities -> m ()
- saveGlobalLogger :: MonadIO m => Logger -> m ()
- updateGlobalLogger :: MonadIO m => LoggerName -> (Logger -> Logger) -> m ()
- setPrefix :: MonadIO m => Maybe FilePath -> m ()
- retrieveLogContent :: MonadIO m => FilePath -> Maybe Int -> m [Text]
Basic Types
Re-Exported from System.Wlog
Severity is level of log message importance. It uniquely determines which messages to print.
Logging Messages
Basic
:: MonadIO m | |
=> LoggerName | Name of the logger to use |
-> Severity | Severity of this message |
-> Text | The log text itself |
-> m () |
Log a message using the given logger at a given priority.
logMCond :: MonadIO m => LoggerName -> Severity -> Text -> (LogHandlerTag -> Bool) -> m () Source #
Utility Functions
removeAllHandlers :: MonadIO m => m () Source #
Allow graceful shutdown. Release all opened fileshandlersetc.
Logger Manipulation
Finding ∨ Creating Loggers
getLogger :: MonadIO m => LoggerName -> m Logger Source #
Returns the logger for the given name. If no logger with that name exists, creates new loggers and any necessary parent loggers, with no connected handlers.
getRootLogger :: MonadIO m => m Logger Source #
Returns the root logger.
rootLoggerName :: LoggerName Source #
The name of the root logger, which is always defined and present on the system.
Modifying Loggers
addHandler :: LogHandler a => a -> Logger -> Logger Source #
removeHandler :: Logger -> Logger Source #
Remove a handler from the Logger
. Handlers are removed in the reverse
order they were added, so the following property holds for any LogHandler
h
:
removeHandler . addHandler h = id
If no handlers are associated with the Logger
, it is returned unchanged.
The root logger's default handler that writes every message to stderr can be removed by using this function before any handlers have been added to the root logger:
updateGlobalLogger rootLoggerName removeHandler
setHandlers :: LogHandler a => [a] -> Logger -> Logger Source #
Set the 'Logger'\'s list of handlers to the list supplied. All existing handlers are removed first.
getLevel :: Logger -> Maybe Severities Source #
Returns the "level" of the logger. Items beneath this level will be ignored.
clearLevel :: Logger -> Logger Source #
Clears the "level" of the Logger
. It will now inherit the level of
| its parent.
Severity settings
setSeverities :: MonadIO m => LoggerName -> Severities -> m () Source #
Set severities for given logger. By default parent's severities are used.
setSeveritiesMaybe :: MonadIO m => LoggerName -> Maybe Severities -> m () Source #
Set or clear severities.
Saving Your Changes
saveGlobalLogger :: MonadIO m => Logger -> m () Source #
Updates the global record for the given logger to take into account any changes you may have made.
:: MonadIO m | |
=> LoggerName | Logger name |
-> (Logger -> Logger) | Function to call |
-> m () |
Helps you make changes on the given logger. Takes a function
that makes changes and writes those changes back to the global
database. Here's an example from above ("s" is a LogHandler
):
updateGlobalLogger "MyApp.BuggyComponent" (setLevel DEBUG . setHandlers [s])
retrieveLogContent :: MonadIO m => FilePath -> Maybe Int -> m [Text] Source #
Retrieves content of log file(s) given path (w/o _lcFilePrefix
,
as specified in your config). Example: there's component.log
in
config, but this function will return [component.log.122,
component.log.123]
if you want to. Content is file lines newest
first.
FYI: this function is implemented to avoid the following problem:
log-warper holds open handles to files, so trying to open log file
for read would result in IOException
.