149 lines
4.9 KiB
Markdown
149 lines
4.9 KiB
Markdown
# Advanced Python Logging (APV)
|
||
> Flexible & powerful logging solution for Python applications
|
||
|
||

|
||
|
||
## Table of Contents
|
||
- [Introduction](#introduction)
|
||
- [Requirements](#requirements)
|
||
- [Installation](#installation)
|
||
- [Features](#features)
|
||
- [Configuration Options](#configuration-options)
|
||
- [Usage](#usage)
|
||
- [Basic Console Logging](#basic-console-logging)
|
||
- [Console Logging with Details](#console-logging-with-details)
|
||
- [File Logging with Rotation](#file-logging-with-rotation)
|
||
- [File Logging with Compression and JSON Format](#file-logging-with-compression-and-json-format)
|
||
- [Mixing it all together](#mixing-it-all-together)
|
||
|
||
## Introduction
|
||
APV emerged from a simple observation: despite the abundance of logging solutions, there's a glaring lack of standardization in application logging. APV is my response to this challenge – a logging library that doesn't aim to revolutionize the field, but rather to streamline it.
|
||
|
||
## Requirements
|
||
- Python 3.10+
|
||
|
||
## Installation
|
||
|
||
### From PyPI
|
||
```bash
|
||
pip install apv
|
||
```
|
||
|
||
### From Source
|
||
```bash
|
||
git clone https://github.com/acidvegas/apv
|
||
cd apv
|
||
pip install .
|
||
```
|
||
|
||
## Features
|
||
- **Console Logging with Colors**: Enhanced readability with colored log messages in the console.
|
||
- **File Logging**: Write logs to files with support for log rotation based on size and number of backups.
|
||
- **Log Compression**: Automatically compress old log files using gzip to save disk space.
|
||
- **JSON Logging**: Output logs in JSON format for better structure and integration with log management systems.
|
||
- **Detailed Log Messages**: Option to include module name, function name, and line number in log messages.
|
||
|
||
## Configuration Options
|
||
|
||
The `setup_logging` function accepts the following keyword arguments to customize logging behavior:
|
||
|
||
| Name | Default | Description |
|
||
|-------------------|--------------------------|-------------------------------------------------------------------------------|
|
||
| `level` | `INFO` | The logging level. *(`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`)* |
|
||
| `date_format` | `'%Y-%m-%d %H:%M:%S'` | The date format for log messages. |
|
||
| `log_to_disk` | `False` | Whether to log to disk. |
|
||
| `max_log_size` | `10*1024*1024` *(10 MB)* | The maximum size of log files before rotation *(in bytes)*. |
|
||
| `max_backups` | `7` | The maximum number of backup log files to keep. |
|
||
| `log_file_name` | `'app'` | The base name of the log file. |
|
||
| `json_log` | `False` | Whether to log in JSON format. |
|
||
| `show_details` | `False` | Whether to include module name, function name, & line number in log messages. |
|
||
| `compress_backups`| `False` | Whether to compress old log files using gzip. |
|
||
|
||
## Usage
|
||
|
||
### Basic Console Logging
|
||
|
||
```python
|
||
import logging
|
||
import apv
|
||
|
||
# Set up basic console logging
|
||
apv.setup_logging(level='INFO')
|
||
|
||
logging.info('This is an info message.')
|
||
logging.error('This is an error message.')
|
||
```
|
||
|
||
### Console Logging with Details
|
||
|
||
```python
|
||
import logging
|
||
import apv
|
||
|
||
# Set up console logging with detailed information
|
||
apv.setup_logging(level='DEBUG', show_details=True)
|
||
|
||
logging.debug('Debug message with details.')
|
||
```
|
||
|
||
### File Logging with Rotation
|
||
|
||
```python
|
||
import logging
|
||
import apv
|
||
|
||
# Set up file logging with log rotation
|
||
apv.setup_logging(
|
||
level='INFO',
|
||
log_to_disk=True,
|
||
max_log_size=10*1024*1024, # 10 MB
|
||
max_backups=5,
|
||
log_file_name='application_log'
|
||
)
|
||
|
||
logging.info('This message will be logged to a file.')
|
||
```
|
||
|
||
### File Logging with Compression and JSON Format
|
||
|
||
```python
|
||
import logging
|
||
import apv
|
||
|
||
# Set up file logging with compression and JSON format
|
||
apv.setup_logging(
|
||
level='DEBUG',
|
||
log_to_disk=True,
|
||
max_log_size=5*1024*1024, # 5 MB
|
||
max_backups=7,
|
||
log_file_name='json_log',
|
||
json_log=True,
|
||
compress_backups=True
|
||
)
|
||
|
||
logging.debug('This is a debug message in JSON format.')
|
||
```
|
||
|
||
### Mixing it all together
|
||
|
||
```python
|
||
import logging
|
||
import apv
|
||
|
||
# Set up logging to all handlers
|
||
apv.setup_logging(
|
||
level='DEBUG',
|
||
log_to_disk=True,
|
||
max_log_size=10*1024*1024,
|
||
max_backups=7,
|
||
log_file_name='app',
|
||
json_log=True,
|
||
compress_backups=True,
|
||
show_details=True
|
||
)
|
||
```
|
||
|
||
---
|
||
|
||
###### Mirrors: [acid.vegas](https://git.acid.vegas/apv) • [SuperNETs](https://git.supernets.org/acidvegas/apv) • [GitHub](https://github.com/acidvegas/apv) • [GitLab](https://gitlab.com/acidvegas/apv) • [Codeberg](https://codeberg.org/acidvegas/apv)
|