Package to simplify setting formatting for multiple logging levels
Project description
MultiLevelLogger
MultiLevelLogger is a Python logging.Logger that simplifies setting log formats for different log levels. Log records with level logging.ERROR or higher are printed to STDERR by default. Motivation for the class has been the use of logging package for CLI verbosity control (--verbose, --debug):
- Define shortcuts for printing different level information instead of using
print():
import multilevellogger
logger = multilevellogger.getMultiLevelLogger(__name__)
error = logger.error
message = logger.message
verbose = logger.verbose
debug = logger.debug
- Set logging level based on CLI option given. Mapping of logging levels:
| CLI option | logging level |
|---|---|
--debug |
logging.DEBUG |
--verbose |
multilevellogger.VERBOSE |
| default | multilevellogger.MESSAGE |
--silent |
logging.ERROR |
# Not complete, does not run
def main() -> None:
...
# assumes command line arguments have been parsed into
# boolean flags: arg_verbose, arg_debug, arg_silent
LOG_LEVEL: int = multilevellogger.MESSAGE
if arg_verbose:
LOG_LEVEL = multilevellogger.VERBOSE
elif arg_debug:
LOG_LEVEL = logging.DEBUG
elif arg_silent:
LOG_LEVEL = logging.ERROR
logger : MultiLevelLogger = getMultiLevelLogger(__name_)
logger.setLevel(LOG_LEVEL)
logger.addLogFile(log_file=file_to_log, level=logging.INFO)
See the example below for more details.
Install
Python 3.11 or later is required.
pip install git+https://github.com/Jylpah/multilevellogger.git
Example
Full runnable example below. It can be found in demos/ folder.
import logging
from typer import Typer, Option # type: ignore
from typing import Annotated, Optional
from pathlib import Path
from multilevellogger import getMultiLevelLogger, MultiLevelLogger, VERBOSE, MESSAGE
logger: MultiLevelLogger = getMultiLevelLogger(__name__)
error = logger.error
warning = logger.warning
message = logger.message
verbose = logger.verbose
info = logger.info
debug = logger.debug
app = Typer()
@app.callback(invoke_without_command=True)
def cli(
print_verbose: Annotated[
bool,
Option(
"--verbose",
"-v",
show_default=False,
help="verbose logging",
),
] = False,
print_debug: Annotated[
bool,
Option(
"--debug",
show_default=False,
help="debug logging",
),
] = False,
print_silent: Annotated[
bool,
Option(
"--silent",
show_default=False,
help="silent logging",
),
] = False,
log: Annotated[Optional[Path], Option(help="log to FILE", metavar="FILE")] = None,
) -> None:
"""MultilevelFormatter demo"""
global logger
try:
LOG_LEVEL: int = MESSAGE # type: ignore
if print_verbose:
LOG_LEVEL = VERBOSE
elif print_debug:
LOG_LEVEL = logging.DEBUG
elif print_silent:
LOG_LEVEL = logging.ERROR
logger.setLevel(LOG_LEVEL)
if log is not None:
logger.addLogFile(log_file=log)
logger.setLevel(LOG_LEVEL)
except Exception as err:
error(f"{err}")
debug("debug")
info("info")
message("message")
verbose("verbose")
warning("warning")
error("error")
if __name__ == "__main__":
app()
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file multilevellogger-0.7.1.tar.gz.
File metadata
- Download URL: multilevellogger-0.7.1.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4cc54b4ed96c6b60ed55da56d8c03289ec76cb6d3a701a1badd0e9cb11f3acf
|
|
| MD5 |
976d07ddfcdc189b008af7af4c89077e
|
|
| BLAKE2b-256 |
94ca4c5ad919e23dd3da9d27bf7c1fecba1f0b4338a1f0167b94778a5f5d9e5e
|
File details
Details for the file multilevellogger-0.7.1-py3-none-any.whl.
File metadata
- Download URL: multilevellogger-0.7.1-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c46e6aaf3e1e7efda434ccd130b1f986d41a122b2b641d4f6790a0f0e18a862
|
|
| MD5 |
766304d1a05124ee28457610515d466b
|
|
| BLAKE2b-256 |
aed06a8fb676233bdb65e032df60dd46cc039c32285ab2226b3c3d864a0bcecc
|