Skip to main content

Lightweight Python logger with log levels, rotation, colorization, async support, and working-directory-scoped file utilities

Project description

ntnlog

Coverage

Lightweight Python logger with timestamped file output, caller stack tracing, and working-directory-scoped file utilities. Next-To-Nothing setup — just import and log.

Features

  • Log levels: TRACE, DEBUG, INFO, WARNING, ERROR, CRITICAL with per-instance and global thresholds
  • Caller stack tracing: Automatically records where in your code a log came from
  • Timestamped file output: Logs written to daily files with no configuration required
  • Log rotation: Size-based rotation with configurable backup count
  • Console colorization: ANSI color output per log level, customizable per instance
  • Exception capturing: exception() attaches the active traceback automatically
  • Async support: alog() and aexception() for async/await code
  • File utilities: Safe, working-directory-scoped file operations with error handling
  • Thread-safe: File writes are protected by a per-instance lock

Installation

pip install ntnlog

Quick Start

from ntnlog import Logger, Level

log = Logger()

log("Application started")
log("Important message", print_to_console=True)
log("Something suspicious", level=Level.WARNING)

# Exception capturing — attaches the active traceback automatically
try:
    do_something()
except Exception:
    log.exception("Something went wrong")

# Async logging
await log.alog("Async message")
await log.aexception("Async error")

# Enable detailed call-stack tracing
log.enable_log_tracing(True)
log("Traced message")

# Named loggers — useful when multiple instances log to the same file
app_logger = Logger(name="app")
worker_logger = Logger(name="worker")
# Output: [2026-05-13 15:46:34][INFO][app][main.py:12] message
#         [2026-05-13 15:46:34][INFO][worker][worker.py:8] message

# Level filtering — string or enum, both work
log = Logger(level=Level.WARNING)
log = Logger(level="warning")

# Log rotation
log = Logger(max_bytes=5_000_000, backup_count=3)

# Console colorization
log = Logger(colorize=True)

# Custom log directory
log = Logger(log_dir="my_logs")

# Project-aware frame filtering
log = Logger(project_dir="/path/to/project")

Configuration

from ntnlog.ntn_config import (
    GLOBAL_LOGGING_ENABLED,
    GLOBAL_LOG_TRACING_ENABLED,
    GLOBAL_LOG_LEVEL,
    GLOBAL_MAX_BYTES,
    GLOBAL_BACKUP_COUNT,
    GLOBAL_LOG_COLORS,
)
Global Default Description
GLOBAL_LOGGING_ENABLED True Master on/off switch for all loggers
GLOBAL_LOG_TRACING_ENABLED True Master tracing switch
GLOBAL_LOG_LEVEL Level.INFO Default minimum level when instance level is None
GLOBAL_MAX_BYTES 10_000_000 Default rotation threshold (10 MB)
GLOBAL_BACKUP_COUNT 1 Default number of backup files kept on rotation
GLOBAL_LOG_COLORS see config ANSI color code per level

Per-instance controls:

log.enable_logging(False)      # disable this logger
log.enable_log_tracing(True)   # enable tracing for this logger

Modules

Logger (ntn_logging.py)

Main logging class. Writes timestamped, level-tagged entries to ./logs/<date>_logging.txt and optionally traces the full call stack to show exactly which file and line triggered the log.

File Utilities (ntn_file_utils.py)

Path and file verification scoped to the working directory:

  • file_verify_path(base, directory) — confirms a directory exists within the working dir
  • file_verify_file(base, filename, operator) — validates a file for read/write/execute

Utils (ntn_utils.py)

Working-directory-scoped path helpers with a clean exception-based API:

  • ntnlog.utils.get_working_dir() — returns the current working directory
  • ntnlog.utils.resolve_path(path, must_exist=False) — resolves a path within the working directory, raises ValueError if it escapes

Configuration (ntn_config.py)

Global flags and defaults controlling logging behaviour across all logger instances.

Development

pip install -e ".[dev]"
pytest
pytest -v
pytest tests/test_ntn_logging.py

License

MIT

Author

Nathan T Nguyen

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

ntnlog-0.4.1.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

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

ntnlog-0.4.1-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file ntnlog-0.4.1.tar.gz.

File metadata

  • Download URL: ntnlog-0.4.1.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ntnlog-0.4.1.tar.gz
Algorithm Hash digest
SHA256 09a7d17ff76de2b69bdbd8139dce11b8506ae6ddfa48249706fa3becc3ff597d
MD5 cc590d84cbec8e271dbbe87c56c1a545
BLAKE2b-256 b548671b3e38e9a8fc1ddf9fd208dac1c93398f1804cb88c542fc5f18951ea39

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntnlog-0.4.1.tar.gz:

Publisher: publish.yml on NhatNguyen5/ntnlog

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

File details

Details for the file ntnlog-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: ntnlog-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ntnlog-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ed44e3ec1f3884fc0b3fa467c68321727b9c54d9de9cf9f2e8fe2e2805a3aa58
MD5 bb308dcee85e2828ffeb6bc721193da2
BLAKE2b-256 fc7c36af18ae242969d10a6ae35caaa34588fa6f458dcd1b78a83b986df7de07

See more details on using hashes here.

Provenance

The following attestation bundles were made for ntnlog-0.4.1-py3-none-any.whl:

Publisher: publish.yml on NhatNguyen5/ntnlog

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 Pingdom Monitoring Sentry Error logging StatusPage Status page