log4hs: A python logging style log library

[ bsd3, library, log, logging ] [ Propose Tags ]
This version is deprecated.

Please see the README


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.1.0, 0.0.2.0, 0.0.3.0, 0.0.4.0, 0.0.5.0, 0.0.6.0, 0.0.7.0, 0.1.0.0, 0.2.0.0, 0.3.0.0, 0.3.1.0, 0.4.0.0, 0.5.0.0, 0.6.0.0, 0.7.0.0, 0.7.1.0, 0.8.0.0, 0.9.0.0 (info)
Change log ChangeLog.md
Dependencies aeson (>=1.4), base (>=4.7 && <5), containers (>=0.6), data-default (>=0.7), directory (>=1.3), filepath (>=1.4), template-haskell (>=2.14), text (>=1.2), time (>=1.8), unordered-containers (>=0.2) [details]
License BSD-3-Clause
Copyright (c) 2019 Version Cloud
Author
Maintainer Jorah Gao <gqk007@gmail.com>
Category logging
Uploaded by gqk007 at 2019-07-27T13:30:28Z
Distributions
Downloads 4108 total (56 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-07-27 [all 1 reports]

Readme for log4hs-0.0.1.0

[back to package description]

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"
    }
  }
}|]