Copyright | (c) 2018-2020 Kowainik 2021-2023 Co-Log |
---|---|
License | MPL-2.0 |
Maintainer | Co-Log <xrom.xkov@gmail.com> |
Stability | Stable |
Portability | Portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module introduces Severity
data type for expressing how severe the
message is. Also, it contains useful functions and patterns for work with Severity
.
Severity | Pattern | Meaning | Example |
---|---|---|---|
Debug | D | Information useful for debug purposes | Internal function call logs |
Info | I | Normal operational information | Finish file uploading |
Warning | W | General warnings, non-critical failures | Image load error |
Error | E | General errors/severe errors | Could not connect to the DB |
Synopsis
- data Severity
- pattern D :: Severity
- pattern I :: Severity
- pattern W :: Severity
- pattern E :: Severity
- filterBySeverity :: Applicative m => Severity -> (a -> Severity) -> LogAction m a -> LogAction m a
- data WithSeverity msg = WithSeverity {
- getMsg :: msg
- getSeverity :: Severity
- mapSeverity :: (Severity -> Severity) -> WithSeverity msg -> WithSeverity msg
Documentation
Severity for the log messages.
Debug | Information useful for debug purposes. E.g. output of the function that is important for the internal development, not for users. Like, the result of SQL query. |
Info | Normal operational information. E.g. describing general steps: starting application, finished downloading. |
Warning | General warnings, non-critical failures. E.g. couldn't download icon from some service to display. |
Error | General errors/severe errors. E.g. exceptional situations: couldn't syncronize accounts. |
Instances
Bounded Severity Source # | |
Enum Severity Source # | |
Ix Severity Source # | |
Defined in Colog.Core.Severity | |
Read Severity Source # | |
Show Severity Source # | |
Eq Severity Source # | |
Ord Severity Source # | |
Defined in Colog.Core.Severity |
Patterns
Instead of using full names of the constructors you can instead use one-letter patterns. To do so you can import and use the pattern:
import Colog (pattern D) example :: WithLog env Message m => m () example = log D "I'm using severity pattern"
Moreover, you could use patterns when pattern-matching on severity
errorToStderr :: Severity
-> IO ()
errorToStderr E = hputStrLn stderr "Error severity"
errorToStderr _ = putStrLn "Something else"
filterBySeverity :: Applicative m => Severity -> (a -> Severity) -> LogAction m a -> LogAction m a Source #
Filters messages by the given Severity
.
data WithSeverity msg Source #
A message tagged with a Severity
.
It is common to want to log various types of messages tagged with a severity.
WithSeverity
provides a standard way to do so while allowing the messages to be processed independently of the severity.
It is easy to cmap
over a 'LogAction m (WithSeverity a)', or to filter based on the severity.
logSomething ::LogAction
m (WithSeverity
String
) -> m () logSomething logger = logger <& "hello" `WithSeverity`Info
cmap' :: (b -> a) ->LogAction
m (WithSeverity
a) ->LogAction
m (WithSeverity
b) cmap' f action =cmap
(fmap
f) action filterBySeverity' :: (Applicative
m) =>Severity
->LogAction
m (WithSeverity
a) ->LogAction
m (WithSeverity
a) filterBySeverity' threshold action =filterBySeverity
thresholdgetSeverity
action
Since: 0.3.1.0
WithSeverity | |
|
Instances
mapSeverity :: (Severity -> Severity) -> WithSeverity msg -> WithSeverity msg Source #
Map the given function over the severity of a WithSeverity
.
This can be useful to operate generically over the severity, for example:
suppressErrors ::LogAction
m (WithSeverity
msg) ->LogAction
m (WithSeverity
msg) suppressErrors =cmap
(mapSeverity
(s -> if s ==Error
thenWarning
else s))
Since: 0.3.1.0