Loguru based custom logging package (beans_logging) for python projects.
Project description
Python Logging (beans_logging)
Loguru based custom logging package (beans_logging) for python projects.
Features
- Loguru based logging - https://pypi.org/project/loguru
- Custom basic logging module
- Logging to files (all, error, json)
- Custom logging formats
- Custom options as a config
- Colorful logging
- Multiprocess compatibility (Linux, macOS - 'fork', Windows - 'spawn')
Installation
1. Prerequisites
- Python (>= v3.7)
- PyPi (>= v21)
2. Install beans-logging
A. [RECOMMENDED] PyPi install
# Install or upgrade beans-logging package:
pip install --upgrade beans-logging
# To uninstall package:
pip uninstall -y beans-logging
B. Manually add to PYTHONPATH (Recommended for development)
# Clone repository by git:
git clone https://github.com/bybatkhuu/python_logging.git beans_logging
cd beans_logging
# Install python dependencies:
pip install --upgrade pip
cat requirements.txt | xargs -n 1 -L 1 pip install --no-cache-dir
# Add current path to PYTHONPATH:
export PYTHONPATH="${PWD}:${PYTHONPATH}"
C. Manually compile and setup (Not recommended)
# Clone repository by git:
git clone https://github.com/bybatkhuu/python_logging.git beans_logging
cd beans_logging
# Building python package:
pip install --upgrade pip setuptools wheel
python setup.py build
# Install python dependencies with built package to current python environment:
python setup.py install --record installed_files.txt
# To remove only installed beans-logging package:
head -n 1 installed_files.txt | xargs rm -vrf
# Or to remove all installed files and packages:
cat installed_files.txt | xargs rm -vrf
3. Configuration (You can skip this step, if you don't want to configure)
- First, check .env.example (environment variables) file.
- Sample .env.example file - https://github.com/bybatkhuu/python_logging/blob/main/.env.example
- Copy .env.example file to .env and change environment variables:
cp -v .env.example [PROJECT_DIR]/.env
cd [PROJECT_DIR]
vi .env
- Make configs directory inside project's base directory and copy configs/logger.yaml file into configs.
- Sample logger.yaml config file - https://github.com/bybatkhuu/python_logging/blob/main/samples/configs/logger.yaml
- Then edit variable options:
mkdir -vp [PROJECT_DIR]/configs
cp -v logger.yaml [PROJECT_DIR]/configs/logger.yaml
rm -vf logger.yaml
cd [PROJECT_DIR]
vi configs/logger.yaml
Usage/Examples
Simple example
sample.py:
from beans_logging import logger
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
try:
divide(10, 0)
except Exception as err:
logger.exception("Failed to divide:")
Advanced example
configs/logger.yaml:
logger:
level: "TRACE"
use_color: true
use_icon: false
use_backtrace: true
std_format_str: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{lvlname:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
use_log_file: true
logs_dir: "./logs"
file_format_str: "[{time:YYYY-MM-DD HH:mm:ss.SSS Z} | {lvlname:<5} | {file}:{line}]: {message}"
rotate_when:
each_days: 1
at_hour: 0
at_minute: 0
at_second: 0
rotate_file_size: 10000000 # 10MB
backup_file_count: 50
file_encoding: "utf8"
all_log_filename: "{app_name}.std.all.log"
err_log_filename: "{app_name}.std.err.log"
use_log_json: true
use_custom_json: true
json_all_log_filename: "{app_name}.json.all.log"
json_err_log_filename: "{app_name}.json.err.log"
ignore_modules: []
mute_modules: []
include_modules: []
.env:
ENV=development
DEBUG=true
APP_NAME=app
PY_LOGS_DIR="./logs"
main.py:
from beans_logging 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 as err:
logger.exception("Show me, what value is wrong:")
Running Tests
To run tests, run the following command:
python -m unittest tests/test_*.py
Environment Variables
You can use the following environment variables inside .env file:
ENV=development
DEBUG=true
APP_NAME=app
PY_LOGS_DIR="/var/log/app"
Configuration
You can use the following sample configuration:
logger:
# app_name: "app"
level: "INFO"
use_color: true
use_icon: false
use_backtrace: true
# use_diagnose: false
std_format_str: "[<c>{time:YYYY-MM-DD HH:mm:ss.SSS Z}</c> | <level>{lvlname:<5}</level> | <w>{name}:{line}</w>]: <level>{message}</level>"
use_log_file: false
logs_dir: "./logs"
file_format_str: "[{time:YYYY-MM-DD HH:mm:ss.SSS Z} | {lvlname:<5} | {file}:{line}]: {message}"
rotate_when:
each_days: 1
at_hour: 0
at_minute: 0
at_second: 0
rotate_file_size: 10000000 # 10MB
backup_file_count: 50
file_encoding: "utf8"
all_log_filename: "{app_name}.std.all.log"
err_log_filename: "{app_name}.std.err.log"
use_log_json: false
use_custom_json: false
json_all_log_filename: "{app_name}.json.all.log"
json_err_log_filename: "{app_name}.json.err.log"
ignore_modules: []
mute_modules: []
include_modules: []
# configs_dir: "./configs"
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
beans_logging-1.0.2.tar.gz
(9.2 kB
view details)
Built Distribution
File details
Details for the file beans_logging-1.0.2.tar.gz
.
File metadata
- Download URL: beans_logging-1.0.2.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8d79db2f8f754557dbbc597b43924227ffdc5a12f8b8469532cbef87e3885ec |
|
MD5 | 0409b04c67ca0d058205f1019ea532a7 |
|
BLAKE2b-256 | 98bd810d265f6f8711c434ff9dd662155c69befdf4a3beccabdfa97ba07de69f |
File details
Details for the file beans_logging-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: beans_logging-1.0.2-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b4c67a85626b5a8ca64d5d6acd1a4796fcecd373444157be3f69af41a1dce9d |
|
MD5 | 5a3cc7a29147783b4949ee69e91ccfa7 |
|
BLAKE2b-256 | 37b076dc8d5cc99d810d90ff45978d32bd391b03d86c73701593ccd5806f7cd1 |