Skip to main content

laplace_log

A small, opinionated logging helper built on top of Python’s standard logging module.

laplace_log is designed for multi-module / multi-process scientific or application projects where you want:

  • One central logger initialization
  • Logs from your app + third‑party libraries
  • Clear application names in logs (e.g. laplace.opt)
  • Automatic daily log folders
  • Simple log.info(...) usage everywhere
  • print() statements captured into logs

No magic, no external dependencies — just structured, predictable logging.


Features

  • ✅ Root logger configuration (captures library logs)
  • ✅ Application‑named logger (app_name)
  • ✅ File + console handlers with independent levels
  • ✅ Automatic folder structure: logs/YYYY-MM-DD/app_name.log
  • ✅ print() and stderr redirection into logs
  • ✅ Simple log.info(...) helper available everywhere
  • ✅ Singleton design (initialize once, use everywhere)
  • ✅ Provide an error hook (to avoid silent failures such as PyQt signals)
  • ✅ If the logger is not set, the log.example(...) will act as a print(...)

Installation

Install with pip:

pip install laplace-log

Quick Start

1. Initialize the logger once (entry point)

from laplace_log import LoggerLHC, log

LoggerLHC(
    app_name="laplace.opt",
    file_level="debug",
    console_level="info",
)

log.info("Starting OptWindow...")

2. Use logging anywhere

from laplace_log import log

log.debug("Debug message")
log.info("Information")
log.warning("Something looks odd")
log.error("Something went wrong")

No need to pass logger instances around.


Log Output Example

2026-01-20 10:21:47 [INFO] [laplace.opt] Starting OptWindow...
2026-01-20 10:21:48 [WARNING] [numpy] overflow encountered in exp
2026-01-20 10:21:49 [INFO] [root] A print statement
  • App logs use your app_name
  • Library logs keep their original logger names
  • print() statements appear as root

Folder Structure

logs/
└── 2026-01-20/
    └── laplace_opt.log
  • A new folder is created each day
  • Dots in app_name are replaced by underscores for filenames

Design Overview

Root logger

The root logger is configured with:

  • File handler (persistent logs)
  • Console handler (stdout)

This ensures all third‑party libraries are captured automatically.

Application logger

Each app uses its own named logger:

logging.getLogger("laplace.opt")

This name appears in log records and helps identify the source clearly.


The log Helper

log is a lightweight helper object:

from laplace_log import log
log.info("Hello")

Internally, it forwards calls to the initialized LoggerLHC instance.

If logging is used before initialization, an explicit error is raised:

RuntimeError: Logger not initialized! Call LoggerLHC(app_name, ...) first.

This avoids silent failures.


Print Redirection

All print() and sys.stderr output is redirected:

  • Printed normally to the console
  • Also logged at INFO level via the root logger

This is useful for:

  • Legacy code
  • Debug prints
  • Third‑party libraries using print

Error Hook

To avoid silent failures, an error hook can be loaded:

from laplace_log import uncaught_exception

This import will by itself make sure that no error will be missed. This is especially useful for PyQt signal errors.


Configuration Options

LoggerLHC(
    app_name: str,
    log_root: Path | str | None = None,
    file_level: str = "debug",
    console_level: str = "info",
)
Parameter Description
app_name Logical name of your application (laplace.opt, lapalce.server, …)
log_root Base folder for logs (default: current working directory)
file_level Minimum level written to file
console_level Minimum level printed to console

Intended Use Cases

  • Scientific applications (optimization, simulations)
  • Multi‑process systems (master / worker / optimizer)
  • GUI + backend projects
  • Long‑running experiments
  • Any project needing clean, centralized logs

License

GPL-3.0 license

Metadata

Release files for laplace-log 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for laplace-log 0.1.4
File Size Uploaded Provenance
laplace_log-0.1.4.tar.gz 18.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for laplace-log 0.1.4
File Interpreter ABI Platform
laplace_log-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 37.1 kB

Release files / laplace_log-0.1.4.tar.gz

Download URL laplace_log-0.1.4.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
dc4b262137644b20e69eb964b2c60529ffe613593a83ac443d06a5a44e657ed8
BLAKE2b-256 checksum
How to use checksums
18c37b277c1252ee21ec22f022368eceda795df6fad893b317ed79dd9b5a2493
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / laplace_log-0.1.4-py3-none-any.whl

Download URL laplace_log-0.1.4-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9204c3d611526e3b0e77918e3209c6d237714641b9dbe936ccfc226ebaa93e74
BLAKE2b-256 checksum
How to use checksums
8cfda6bbc2ddd70f70a0905ef7b48573cb273323a7bdc27c8ce26d1c6efd3161
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Security for laplace-log 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page