log-warper 1.7.5 → 1.7.6
raw patch · 6 files changed
+42/−28 lines, 6 files
Files
- CHANGES.md +5/−0
- examples/HowTo.lhs +4/−4
- examples/HowTo.md +4/−4
- examples/Playground.hs +0/−1
- log-warper.cabal +1/−1
- src/System/Wlog/LoggerConfig.hs +28/−18
CHANGES.md view
@@ -1,3 +1,8 @@+1.7.6+=====++* Upgrade `universum` to version `0.9.1`. Add `Semigroup` instances.+ 1.7.5 =====
examples/HowTo.lhs view
@@ -57,16 +57,16 @@ There are two ways of configuring the logger you creating. One option is to configure everything directly in the code, which will make the process of writing code less convenient. Here we will use another configuration possibility-— we will write configurations in special `.yaml` file.+-- we will write configurations in special `.yaml` file. In our example we will use very simple one with the minimal settings needed for the file to work. You can have a look at [`how-to-log-config.yaml`](https://github.com/serokell/log-warper/blob/master/examples/how-to-log-config.yaml), it contains the following lines: ```yaml loggerTree:- severity: Warning+ # severities for «root» logger- new-logger: # logger named «new-logger»- severity: Debug+ # severities for logger «new-logger»+ severity: Warning+ # severities for "root" logger+ new-logger: # logger named "new-logger"+ severity: Debug+ # severities for logger "new-logger" ``` You don't need to worry about root logger for now. This part is explained in section devoted to hierarchical logging.
examples/HowTo.md view
@@ -57,16 +57,16 @@ There are two ways of configuring the logger you creating. One option is to configure everything directly in the code, which will make the process of writing code less convenient. Here we will use another configuration possibility-— we will write configurations in special `.yaml` file.+-- we will write configurations in special `.yaml` file. In our example we will use very simple one with the minimal settings needed for the file to work. You can have a look at [`how-to-log-config.yaml`](https://github.com/serokell/log-warper/blob/master/examples/how-to-log-config.yaml), it contains the following lines: ```yaml loggerTree:- severity: Warning+ # severities for «root» logger- new-logger: # logger named «new-logger»- severity: Debug+ # severities for logger «new-logger»+ severity: Warning+ # severities for "root" logger+ new-logger: # logger named "new-logger"+ severity: Debug+ # severities for logger "new-logger" ``` You don't need to worry about root logger for now. This part is explained in section devoted to hierarchical logging.
examples/Playground.hs view
@@ -4,7 +4,6 @@ import Universum -import Data.Monoid ((<>)) import Data.Yaml.Pretty (defConfig, encodePretty) import System.Wlog (CanLog, defaultConfig, launchFromFile, launchSimpleLogging, logDebug, logError,
log-warper.cabal view
@@ -1,5 +1,5 @@ name: log-warper-version: 1.7.5+version: 1.7.6 synopsis: Flexible, configurable, monadic and pretty logging homepage: https://github.com/serokell/log-warper license: MIT
src/System/Wlog/LoggerConfig.hs view
@@ -129,6 +129,16 @@ makeLenses ''LoggerTree +instance Semigroup LoggerTree where+ lt1 <> lt2 = LoggerTree+ { _ltFiles = andCombiner _ltFiles+ , _ltSeverity = orCombiner _ltSeverity+ , _ltSubloggers = andCombiner _ltSubloggers+ }+ where+ orCombiner field = field lt1 <|> field lt2+ andCombiner field = field lt1 <> field lt2+ -- TODO: QuickCheck tests on monoid laws instance Monoid LoggerTree where mempty = LoggerTree@@ -137,11 +147,7 @@ , _ltSubloggers = mempty } - lt1 `mappend` lt2 = LoggerTree- { _ltFiles = _ltFiles lt1 <> _ltFiles lt2- , _ltSeverity = _ltSeverity lt1 <|> _ltSeverity lt2- , _ltSubloggers = _ltSubloggers lt1 <> _ltSubloggers lt2- }+ mappend = (<>) instance ToJSON HandlerWrap instance FromJSON HandlerWrap where@@ -241,6 +247,22 @@ makeLenses ''LoggerConfig +instance Semigroup LoggerConfig where+ lc1 <> lc2 = LoggerConfig+ { _lcRotation = orCombiner _lcRotation+ , _lcTermSeverityOut = orCombiner _lcTermSeverityOut+ , _lcTermSeverityErr = orCombiner _lcTermSeverityErr+ , _lcShowTime = andCombiner _lcShowTime+ , _lcShowTid = andCombiner _lcShowTid+ , _lcConsoleAction = andCombiner _lcConsoleAction+ , _lcMapper = andCombiner _lcMapper+ , _lcTree = andCombiner _lcTree+ }+ where+ orCombiner field = field lc1 <|> field lc2+ andCombiner field = field lc1 <> field lc2++ -- TODO: QuickCheck tests on monoid laws instance Monoid LoggerConfig where mempty = LoggerConfig@@ -254,19 +276,7 @@ , _lcTree = mempty } - lc1 `mappend` lc2 = LoggerConfig- { _lcRotation = orCombiner _lcRotation- , _lcTermSeverityOut = orCombiner _lcTermSeverityOut- , _lcTermSeverityErr = orCombiner _lcTermSeverityErr- , _lcShowTime = andCombiner _lcShowTime- , _lcShowTid = andCombiner _lcShowTid- , _lcConsoleAction = andCombiner _lcConsoleAction- , _lcMapper = andCombiner _lcMapper- , _lcTree = andCombiner _lcTree- }- where- orCombiner field = field lc1 <|> field lc2- andCombiner field = field lc1 <> field lc2+ mappend = (<>) instance FromJSON LoggerConfig where parseJSON = withObject "rotation params" $ \o -> do