Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logpie-3.0.1.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

logpie-3.0.1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file logpie-3.0.1.tar.gz.

File metadata

  • Download URL: logpie-3.0.1.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.5

File hashes

Hashes for logpie-3.0.1.tar.gz
Algorithm Hash digest
SHA256 60307a6a3bd28c34b172956b6241964d383ee05dc14602fbff8f04a7a28c69d0
MD5 31acb698c8ffbc6cdf30a42744d503b2
BLAKE2b-256 9dedfd5208c18ab7d1d66baf0d7f29dccd1c20b61e939fbbea019fd25bbc57af

See more details on using hashes here.

File details

Details for the file logpie-3.0.1-py3-none-any.whl.

File metadata

  • Download URL: logpie-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.5

File hashes

Hashes for logpie-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 71e8a9652637db79db22adec1534757da475f10e15fbf6a5861f67faa7aa6e74
MD5 57e62c98b1c022f6144db5f5f42e157a
BLAKE2b-256 d9fbe08f3d43659eb67561e839679003a6e3119e405ff0fec0cbc1653e2a9c84

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page