log-warper-1.9.0: Flexible, configurable, monadic and pretty logging

Copyright(c) Serokell 2016
LicenseGPL-3 (see the file LICENSE)
MaintainerSerokell <hi@serokell.io>
Stabilityexperimental
PortabilityPOSIX, GHC
Safe HaskellNone
LanguageHaskell2010

System.Wlog.LoggerConfig

Contents

Description

Logger configuration.

Synopsis

Documentation

data RotationParameters Source #

Parameters for logging rotation.

Constructors

RotationParameters 

Fields

Instances
Show RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Generic RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Associated Types

type Rep RotationParameters :: Type -> Type #

ToJSON RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

FromJSON RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Buildable RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep RotationParameters Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep RotationParameters = D1 (MetaData "RotationParameters" "System.Wlog.LoggerConfig" "log-warper-1.9.0-BcP8iiwzwkw7f22YOoi1Hd" False) (C1 (MetaCons "RotationParameters" PrefixI True) (S1 (MetaSel (Just "rpLogLimit") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word64) :*: S1 (MetaSel (Just "rpKeepFiles") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Word)))

fromScratch :: Monoid m => State m a -> m Source #

Useful lens combinator to be used for logging initialization. Usually should be used with zoomLogger.

isValidRotation :: RotationParameters -> Bool Source #

Checks if logger rotation parameters are valid.

Hierarchical tree of loggers (with lenses)

data HandlerWrap Source #

Wrapper over file handler with additional rounding option.

Constructors

HandlerWrap 

Fields

  • _hwFilePath :: !FilePath

    Path to the file to be handled.

  • _hwRounding :: !(Maybe Int)

    Round timestamps to this power of 10 picoseconds. Just 3 would round to nanoseconds. Just 12 would round to seconds.

Instances
Show HandlerWrap Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Generic HandlerWrap Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Associated Types

type Rep HandlerWrap :: Type -> Type #

ToJSON HandlerWrap Source # 
Instance details

Defined in System.Wlog.LoggerConfig

FromJSON HandlerWrap Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep HandlerWrap Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep HandlerWrap = D1 (MetaData "HandlerWrap" "System.Wlog.LoggerConfig" "log-warper-1.9.0-BcP8iiwzwkw7f22YOoi1Hd" False) (C1 (MetaCons "HandlerWrap" PrefixI True) (S1 (MetaSel (Just "_hwFilePath") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 FilePath) :*: S1 (MetaSel (Just "_hwRounding") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Maybe Int))))

data LoggerTree Source #

Stores configuration for hierarchical loggers.

Instances
Show LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Generic LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Associated Types

type Rep LoggerTree :: Type -> Type #

Semigroup LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Monoid LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

ToJSON LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

FromJSON LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep LoggerTree Source # 
Instance details

Defined in System.Wlog.LoggerConfig

type Rep LoggerTree = D1 (MetaData "LoggerTree" "System.Wlog.LoggerConfig" "log-warper-1.9.0-BcP8iiwzwkw7f22YOoi1Hd" False) (C1 (MetaCons "LoggerTree" PrefixI True) (S1 (MetaSel (Just "_ltSubloggers") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 LoggerMap) :*: (S1 (MetaSel (Just "_ltFiles") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [HandlerWrap]) :*: S1 (MetaSel (Just "_ltSeverity") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Maybe Severities)))))

Global logger configuration

data LoggerConfig Source #

Logger configuration which keeps RotationParameters and LoggerTree.

Constructors

LoggerConfig 

Fields

Instances
Semigroup LoggerConfig Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Monoid LoggerConfig Source # 
Instance details

Defined in System.Wlog.LoggerConfig

ToJSON LoggerConfig Source #

This instances violates fromJSON . toJSON = identity rule but doesn't matter because it is used only for debugging.

Instance details

Defined in System.Wlog.LoggerConfig

FromJSON LoggerConfig Source # 
Instance details

Defined in System.Wlog.LoggerConfig

Lenses

zoomLogger :: LoggerName -> State LoggerTree () -> State LoggerTree () Source #

Zooming into logger name with putting specific key.

atLogger :: LoggerName -> Traversal' LoggerConfig LoggerTree Source #

Lens to help to change some particular logger properties.

For example if you want to use default configurations, but need to change logger's severity to warningPlus you can do it this way:

launchWithConfig
    ( defaultConfig "myLogger"
    & atLogger "myLogger"
    . ltSeverity ?~ warningPlus )
    "myLogger"
    action

Builders for LoggerConfig

customConsoleActionB :: Maybe (Handle -> Text -> IO ()) -> LoggerConfig Source #

Setup lcConsoleOutput inside LoggerConfig.

logsDirB :: FilePath -> LoggerConfig Source #

Setup lcLogsDirectory inside LoggerConfig to specific prefix.

productionB :: LoggerConfig Source #

Adds sensible predefined set of parameters to logger.