Skip to main content

logmuse

Build Status

A small Python package that makes it easy to add CLI-controllable logging to your command-line tools. It provides a simple interface for standard logging arguments (--verbosity, --silent, --logdev) that can be passed directly to a logger.

Installation

pip install logmuse

Quick start

Add logging options to your CLI and create a logger in three lines:

import argparse
import logmuse

parser = argparse.ArgumentParser()
# your arguments here...
parser = logmuse.add_logging_options(parser)
args = parser.parse_args()
logger = logmuse.logger_via_cli(args)

logger.info("Hello, world!")

This adds --silent, --verbosity, and --logdev options to your CLI automatically.

Setup for a CLI package

1. Add CLI args to your argparser

parser = logmuse.add_logging_options(parser)

This gives you --verbosity, --silent, and --logdev options.

2. Activate in your main function

import logmuse


def main():
    # ... parse args ...
    logger = logmuse.logger_via_cli(args, make_root=True)

That's it. Call logger_via_cli once in your CLI entry point, and all loggers in your package (and its dependencies) will respect the CLI options.

For imported packages

Imported packages don't need logmuse at all. Just use the standard logging module:

import logging

_LOGGER = logging.getLogger(__name__)

The CLI arguments passed to logmuse will control these loggers too.

Avoid calling init_logger at import time

Do not put logmuse.init_logger() in your package's __init__.py. This replaces the logger's handlers at import time, which prevents it from inheriting configuration from a root logger. This causes problems when your package is used as a library (not via its own CLI).

Using logmuse interactively

To set logging to DEBUG in an interactive session:

logmuse.init_logger("my_package", "DEBUG", devmode=True)

Usage reference

CLI options

add_logging_options(parser) adds three arguments to an argparse.ArgumentParser:

Option Effect
--silent Silence all logging output
--verbosity V Set logging level (1=CRITICAL, 2=ERROR, 3=WARN, 4=INFO, 5=DEBUG, or a level name)
--logdev Use a detailed developer log format with timestamps, module, and line numbers

init_logger parameters

Parameter Default Description
name "logmuse" Logger name
level None Logging level (int or string)
verbosity None Verbosity level (1-5); alternative to level
silent False Silence all output
devmode False Use detailed developer format
stream stderr Output stream ("OUT" for stdout, "ERR" for stderr)
logfile None Path to log file (mutes stream output)
make_root None Use as root logger
propagate False Allow messages to reach parent loggers
fmt None Custom format string
datefmt "%H:%M:%S" Time format
plain_format False Force plain format even in devmode
style None Format style (%, {, or $)
use_full_names False Don't truncate level names

Verbosity levels

Verbosity Logging Level
1 CRITICAL
2 ERROR
3 WARN
4 INFO
5 DEBUG

Download files

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

Source Distribution

logmuse-0.3.1.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logmuse-0.3.1-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file logmuse-0.3.1.tar.gz.

File metadata

  • Download URL: logmuse-0.3.1.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for logmuse-0.3.1.tar.gz
Algorithm Hash digest
SHA256 e7035e216bbae03098506e863ab733c42ca3e6a9713444a1d159971da54ae04f
MD5 249452be166f1db73c9be90260a10289
BLAKE2b-256 26e741e287bf07fcfa66700bbf89afe040add3d0aec6487322b96328bc07bc9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for logmuse-0.3.1.tar.gz:

Publisher: python-publish.yml on databio/logmuse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file logmuse-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: logmuse-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for logmuse-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 264e043e6ee6d4613d9cffa747fef394bc9c88e58fca9f797b47dc3200e12509
MD5 7bd14b89e74b8354c685f7d91c27ad04
BLAKE2b-256 ee1f5a1ddf004940b22b55c73df2aef76745be1e792d68c0ad31928e7ef782e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for logmuse-0.3.1-py3-none-any.whl:

Publisher: python-publish.yml on databio/logmuse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page