log4hs-0.0.1.0: src/Logging.hs
{-|
Module : Logging
Copyright : (c) 2019 Version Cloud
License : BSD3
Maintainer : Jorah Gao <gqk007@gmail.com>
Stability : experimental
Portability : portable
= A python logging style log library.
=== A full example:
@
\{\-\# LANGUAGE OverloadedStrings \#\-\}
\{\-\# LANGUAGE QuasiQuotes \#\-\}
\{\-\# LANGUAGE RecordWildCards \#\-\}
\{\-\# LANGUAGE TemplateHaskell \#\-\}
module Main (main) where
import Data.Aeson.QQ.Simple (aesonQQ)
import Prelude hiding (error)
import Logging (runJson, debug, info, warn, error, fatal, logv)
main :: IO ()
main = 'runJson' manager app
myLogger = \"MyLogger.Main\"
app :: IO ()
app = do
\$(debug) myLogger \"this message should print into MyLogger\"
\$(info) myLogger \"this message should print into MyLogger\"
\$(warn) myLogger \"this message should print into MyLogger\"
\$(error) myLogger \"this message should print into MyLogger\"
\$(fatal) myLogger \"this message should print into MyLogger\"
\$(logv) myLogger "LEVEL 100" \"this message should print into MyLogger\"
\-\- The best practice is putting all config into a separate file,
\-\- e.g "Logging.json"
manager = [aesonQQ|{
\"loggers\": {
\"root\": {
\"level\": \"DEBUG\",
\"handlers\": [\"console\"],
\"propagate\": false
},
\"MyLogger\": {
\"level\": \"INFO\",
\"filterer\": [\"MyLogger.Main\"],
\"handlers\": [\"file\"],
\"propagate\": false
}
},
\"handlers\": {
\"console\": {
\"type\": \"StreamHandler\",
\"stream\": \"stderr\",
\"level\": \"DEBUG\",
\"formatter\": \"defaultFormatter\"
},
\"file\": {
\"type\": \"FileHandler\",
\"level\": \"INFO\",
\"formatter\": \"defaultFormatter\",
\"file\": \"./default.log\"
}
},
\"formatters\": {
\"defaultFormatter\": {
\"fmt\": \"%(asctime)s - %(level)s - %(logger)s - %(pathname)s/%(filename)s:%(lineno)d] %(message)s\"
}
}
}|]
@
-}
module Logging
( module Logging.Internal
-- ** Logging THs
, module Logging.TH
-- ** Types
, module Logging.Types
) where
import Logging.Internal hiding (log)
import Logging.TH
import Logging.Types hiding (Filterable (..), Formattable (..))