Copyright | Copyright (C) 2004-2011 John Goerzen |
---|---|
License | BSD3 |
Maintainer | John Goerzen <[email protected]> |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
System.Wlog.IOLogger
Contents
Description
Haskell Logging Framework, Primary Interface
Written by John Goerzen, [email protected]
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.
Synopsis
- 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.
Constructors
Debug | Debug messages |
Info | Information |
Notice | Important (more than average) information |
Warning | General warnings |
Error | General errors/severe errors |
Instances
Bounded Severity Source # | |
Enum Severity Source # | |
Defined in System.Wlog.Severity | |
Eq Severity Source # | |
Ord Severity Source # | |
Defined in System.Wlog.Severity | |
Read Severity Source # | |
Show Severity Source # | |
Generic Severity Source # | |
ToJSON Severity Source # | |
Defined in System.Wlog.Severity | |
FromJSON Severity Source # | |
type Rep Severity Source # | |
Defined in System.Wlog.Severity type Rep Severity = D1 (MetaData "Severity" "System.Wlog.Severity" "log-warper-1.9.0-BcP8iiwzwkw7f22YOoi1Hd" False) ((C1 (MetaCons "Debug" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Info" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "Notice" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "Warning" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Error" PrefixI False) (U1 :: Type -> Type)))) |
Logging Messages
Basic
Arguments
:: 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.
Arguments
:: 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
.