'beans-logging' is a python package for simple logger and easily managing logs.
Project description
Python Logging (beans-logging)
beans-logging is a python package for simple logger and easily managing logs.
It is a Loguru based custom logging package for python projects.
✨ Features
- Main logger based on Loguru logging - https://pypi.org/project/loguru
- Logging to log files (all, error, json)
- Pre-defined logging configs and handlers
- Colorful logging
- Auto intercepting and muting modules
- Load config from YAML or JSON file
- Custom options as a config
- Custom logging formats
- Multiprocess compatibility (Linux, macOS - 'fork')
- Add custom handlers
- Base logging module
🛠 Installation
1. 🚧 Prerequisites
- Install Python (>= v3.10) and pip (>= 23):
- [RECOMMENDED] Miniconda (v3)
- [arm64/aarch64] Miniforge (v3)
- [Python virutal environment] venv
[OPTIONAL] For DEVELOPMENT environment:
2. 📥 Download or clone the repository
[TIP] Skip this step, if you're going to install the package directly from PyPi or GitHub repository.
2.1. Prepare projects directory (if not exists):
# Create projects directory:
mkdir -pv ~/workspaces/projects
# Enter into projects directory:
cd ~/workspaces/projects
2.2. Follow one of the below options [A], [B] or [C]:
OPTION A. Clone the repository:
git clone https://github.com/bybatkhuu/module-python-logging.git && \
cd module-python-logging
OPTION B. Clone the repository (for DEVELOPMENT: git + ssh key):
git clone git@github.com:bybatkhuu/module-python-logging.git && \
cd module-python-logging
OPTION C. Download source code:
- Download archived zip file from releases.
- Extract it into the projects directory.
3. 📦 Install the package
[NOTE] Choose one of the following methods to install the package [A ~ F]:
OPTION A. [RECOMMENDED] Install from PyPi:
pip install -U beans-logging
OPTION B. Install latest version directly from GitHub repository:
pip install git+https://github.com/bybatkhuu/module-python-logging.git
OPTION C. Install from the downloaded source code:
# Install directly from the source code:
pip install .
# Or install with editable mode:
pip install -e .
OPTION D. Install for DEVELOPMENT environment:
pip install -e .[dev]
# Install pre-commit hooks:
pre-commit install
OPTION E. Install from pre-built release files:
- Download
.whlor.tar.gzfile from releases - Install with pip:
# Install from .whl file:
pip install ./beans_logging-[VERSION]-py3-none-any.whl
# Or install from .tar.gz file:
pip install ./beans_logging-[VERSION].tar.gz
OPTION F. Copy the module into the project directory (for testing):
# Install python dependencies:
pip install -r ./requirements.txt
# Copy the module source code into the project:
cp -r ./src/beans_logging [PROJECT_DIR]
# For example:
cp -r ./src/beans_logging /some/path/project/
🚸 Usage/Examples
To use beans_logging, import the logger instance from the beans_logging.auto package:
from beans_logging.auto import logger
You can call logging methods directly from the logger instance:
logger.info("Logging info.")
Simple
logger:
app_name: my-app
default:
level:
base: TRACE
handlers:
default.all.file_handler:
enabled: true
default.err.file_handler:
enabled: true
default.all.json_handler:
enabled: true
default.err.json_handler:
enabled: true
#!/usr/bin/env python
from beans_logging.auto import logger
logger.trace("Tracing...")
logger.debug("Debugging...")
logger.info("Logging info.")
logger.success("Success.")
logger.warning("Warning something.")
logger.error("Error occured.")
logger.critical("CRITICAL ERROR.")
def divide(a, b):
_result = a / b
return _result
def nested(c):
try:
divide(5, c)
except ZeroDivisionError as err:
logger.error(err)
raise
try:
nested(0)
except Exception:
logger.exception("Show me, what value is wrong:")
Run the examples/simple:
cd ./examples/simple
python ./main.py
Output:
[2025-11-01 00:00:00.735 +09:00 | TRACE | beans_logging._intercept:96]: Intercepted modules: ['potato_util._base', 'potato_util.io', 'concurrent', 'concurrent.futures', 'asyncio', 'potato_util.io._sync', 'potato_util']; Muted modules: [];
[2025-11-01 00:00:00.736 +09:00 | TRACE | __main__:6]: Tracing...
[2025-11-01 00:00:00.736 +09:00 | DEBUG | __main__:7]: Debugging...
[2025-11-01 00:00:00.736 +09:00 | INFO | __main__:8]: Logging info.
[2025-11-01 00:00:00.736 +09:00 | OK | __main__:9]: Success.
[2025-11-01 00:00:00.736 +09:00 | WARN | __main__:10]: Warning something.
[2025-11-01 00:00:00.736 +09:00 | ERROR | __main__:11]: Error occured.
[2025-11-01 00:00:00.736 +09:00 | CRIT | __main__:12]: CRITICAL ERROR.
[2025-11-01 00:00:00.736 +09:00 | ERROR | __main__:24]: division by zero
[2025-11-01 00:00:00.737 +09:00 | ERROR | __main__:31]: Show me, what value is wrong:
Traceback (most recent call last):
> File "/home/user/workspaces/projects/my/module-python-logging/examples/simple/./main.py", line 29, in <module>
nested(0)
└ <function nested at 0x102f37910>
File "/home/user/workspaces/projects/my/module-python-logging/examples/simple/./main.py", line 22, in nested
divide(5, c)
│ └ 0
└ <function divide at 0x102f377f0>
File "/home/user/workspaces/projects/my/module-python-logging/examples/simple/./main.py", line 16, in divide
_result = a / b
│ └ 0
└ 5
ZeroDivisionError: division by zero
👍
⚙️ Configuration
logger:
# app_name: app
default:
level:
base: INFO
err: WARNING
format_str: "[{time:YYYY-MM-DD HH:mm:ss.SSS Z} | {extra[level_short]:<5} | {name}:{line}]: {message}"
file:
logs_dir: "./logs"
rotate_size: 10000000
rotate_time: "00:00:00"
retention: 90
encoding: utf8
custom_serialize: false
intercept:
enabled: true
only_base: false
ignore_modules: []
include_modules: []
mute_modules: []
handlers:
default.all.std_handler:
type: STD
format: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{extra[level_short]:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
colorize: true
enabled: true
default.all.file_handler:
type: FILE
sink: "{app_name}.all.log"
enabled: false
default.err.file_handler:
type: FILE
sink: "{app_name}.err.log"
error: true
enabled: false
default.all.json_handler:
type: FILE
sink: "json/{app_name}.json.all.log"
serialize: true
enabled: false
default.err.json_handler:
type: FILE
sink: "json/{app_name}.json.err.log"
serialize: true
error: true
enabled: false
extra:
🌎 Environment Variables
# ENV=LOCAL
# DEBUG=false
# TZ=UTC
🧪 Running Tests
To run tests, run the following command:
# Install python test dependencies:
pip install .[test]
# Run tests:
python -m pytest -sv -o log_cli=true
# Or use the test script:
./scripts/test.sh -l -v -c
🏗️ Build Package
To build the python package, run the following command:
# Install python build dependencies:
pip install -r ./requirements/requirements.build.txt
# Build python package:
python -m build
# Or use the build script:
./scripts/build.sh
📝 Generate Docs
To build the documentation, run the following command:
# Install python documentation dependencies:
pip install -r ./requirements/requirements.docs.txt
# Serve documentation locally (for development):
mkdocs serve -a 0.0.0.0:8000
# Or use the docs script:
./scripts/docs.sh
# Or build documentation:
mkdocs build
# Or use the docs script:
./scripts/docs.sh -b
📚 Documentation
📑 References
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 beans_logging-7.1.0.tar.gz.
File metadata
- Download URL: beans_logging-7.1.0.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13c28de5b6b194aa3f18b940b907c5384cddcca7dc9575aca3919bb93bbd3356
|
|
| MD5 |
2a2dbf2d5adb5aa2b304328573eb9007
|
|
| BLAKE2b-256 |
9ac58a683c82d5ddf7ebdd4bbef377179597954a6b7eabb3dd46e7a0c628d257
|
File details
Details for the file beans_logging-7.1.0-py3-none-any.whl.
File metadata
- Download URL: beans_logging-7.1.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d5bb2f5908d953806f5c9c02217e860335aba8886bf7fb3cef9884c87354809
|
|
| MD5 |
3018f762ad3b3a9abfbc23106ef24013
|
|
| BLAKE2b-256 |
dd86eae2d6d59e2d87625ab78d8157d8691648ce64b5ebd13bb56a07c182484d
|