Logging made simple.
Project description
logpie
Logging made simple.
This is a simple logging module with thread & file locking abilities.
Installation:
python -m pip install [--upgrade] logpie
Usage:
# your `main.py` module
from os.path import dirname, realpath, join
from sys import modules
from types import ModuleType
from cfgpie import get_config, CfgParser
from logpie import get_logger, Logger
# **************************** config constants: **************************** #
# main module
MODULE: ModuleType = modules.get("__main__")
# root directory
ROOT: str = dirname(realpath(MODULE.__file__))
# default config file path:
CONFIG: str = join(ROOT, "config", "cfgpie.ini")
# backup config params:
BACKUP: dict = {
"LOGGER": {
"basename": "logpie", # if handler is `file`
"folder": r"${DEFAULT:directory}\logs",
"handlers": ["file"], # or `console` or both (always as list)
"level": 0, # logs all messages above this level
}
}
# NOTE: The constants above serve the usage example,
# and you can use whatever suits you best.
# ********************** get `ConfigParser` instance: *********************** #
cfg: CfgParser = get_config(name="my_config")
cfg.set_defaults(directory=ROOT)
cfg.open(file_path=CONFIG, encoding="UTF-8", fallback=BACKUP)
# ************************* get `Logger` instance: ************************** #
# we can pass a config instance:
log: Logger = get_logger(name="my_logger", config=cfg)
or
# it will look for a config instance named `my_config`:
log: Logger = get_logger(name="my_logger", config="my_config")
or
# it will create and use its own config instance:
log: Logger = get_logger(name="my_logger", level="debug", handlers="file", basename="logpie")
if __name__ == '__main__':
log.debug("Testing debug messages...")
log.info("Testing info messages...")
log.warning("Testing warning messages...")
log.error("Testing error messages...")
log.critical("Testing critical messages...")
By default, logging level
is set to NOTSET
(0) and it logs all messages.
The log file is prefixed with a date and will have an index number attached before the extension (ex: 2022-08-01_logpie.1.log
).
When it reaches 1 Mb
the file handler will switch to another file by incrementing its index with 1
.
The folder tree is by default structured as follows:
.
└───logs
└───year (ex: 2022)
└───month (ex: january)
├───2022-08-01_logpie.1.log
├───2022-08-01_logpie.2.log
└───2022-08-01_logpie.3.log
When the current month changes, a new folder is created and the previous one is archived.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file logpie-2.1.2.tar.gz
.
File metadata
- Download URL: logpie-2.1.2.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c2aca46eee1e2e67e573909ff5cd4ed2a02e329eb9e2f50c8dae7bab6036273 |
|
MD5 | 71bf08b843d5658dd36b1f34ace56ead |
|
BLAKE2b-256 | 5b2cbb9f6a7fcef1d7fe47478e5003aa48bc2a6cd383fa4c8dfbcc8996ee0464 |
File details
Details for the file logpie-2.1.2-py3-none-any.whl
.
File metadata
- Download URL: logpie-2.1.2-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa6deb401b991e302cdc2ef2c094c1f0b4b5c4fa2324180ba91930f025975968 |
|
MD5 | 1531b05fdd9802d17967f525ef54da88 |
|
BLAKE2b-256 | 2abea85e061492d978f65be8875e6b49a8ad781999607557316e543f5f684016 |