Advanced Python Logging
Project description
Advanced Python Logging (APV)
Flexible & powerful logging solution for Python applications
Table of Contents
Introduction
APV emerged from a simple observation: despite the abundance of logging solutions, there's a glaring lack of standardization in application logging. As a developer deeply entrenched in Elasticsearch, AWS, and Graylog ecosystems, I found myself repeatedly grappling with inconsistent log formats and cumbersome integrations. 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
# Basic installation
pip install apv
# With CloudWatch support
pip install apv[cloudwatch]
# With ECS logging support
pip install apv[ecs]
# With all optional dependencies
pip install "apv[cloudwatch,ecs]"
From Source
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.
- ECS Logging: Output logs in ECS format for better integration with Elasticsearch
- Detailed Log Messages: Option to include module name, function name, and line number in log messages.
- Graylog Integration: Send logs to a Graylog server using GELF over UDP.
- AWS CloudWatch Integration: Send logs to AWS CloudWatch Logs.
- Customizable Logging Levels: Set the logging level to control verbosity.
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. |
ecs_log |
False |
Whether to log in ECS 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. |
enable_graylog |
False |
Whether to enable logging to a Graylog server. |
graylog_host |
None |
The Graylog server host. (Required if enable_graylog is True ) |
graylog_port |
None |
The Graylog server port. (Required if enable_graylog is True ) |
enable_cloudwatch |
False |
Whether to enable logging to AWS CloudWatch Logs. |
cloudwatch_group_name |
None |
The name of the CloudWatch log group. (Required if enable_cloudwatch is True ) |
cloudwatch_stream_name |
None |
The name of the CloudWatch log stream. (Required if enable_cloudwatch is True ) |
Usage
Basic Console Logging
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
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
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
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.')
Graylog Integration
import logging
import apv
# Set up logging to Graylog server
apv.setup_logging(
level='INFO',
enable_graylog=True,
graylog_host='graylog.example.com',
graylog_port=12201
)
logging.info('This message will be sent to Graylog.')
AWS CloudWatch Integration
import logging
import apv
# Set up logging to AWS CloudWatch Logs
apv.setup_logging(
level='INFO',
enable_cloudwatch=True,
cloudwatch_group_name='my_log_group',
cloudwatch_stream_name='my_log_stream'
)
logging.info('This message will be sent to AWS CloudWatch.')
ECS Logging
import logging
import apv
# Set up ECS logging
apv.setup_logging(
level='INFO',
ecs_log=True
)
Mixing it all together
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,
enable_graylog=True,
graylog_host='graylog.example.com',
graylog_port=12201,
enable_cloudwatch=True,
cloudwatch_group_name='my_log_group',
cloudwatch_stream_name='my_log_stream',
show_details=True
)
Mirrors: acid.vegas • SuperNETs • GitHub • GitLab • Codeberg
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
File details
Details for the file apv-1.0.2.tar.gz
.
File metadata
- Download URL: apv-1.0.2.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 452ecb641afb0ba1cfc2b8e9d4fe6985b2c2ee325e1a4157e5e22c35c2690c5c |
|
MD5 | 38d7ac26d044b7d636dba74900f4f6be |
|
BLAKE2b-256 | f6cbf93ac9e2953c19f92c5f5f4932465d9d18da7609af648f14dd2e7ffd6cc2 |
File details
Details for the file apv-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: apv-1.0.2-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd6547c484b75211f8f33123972cf934ff8a31136b11c29663f715c6d1508318 |
|
MD5 | 3a4dab3a79fa470f88ed9da68809d975 |
|
BLAKE2b-256 | 3d8b73ea695721fd1a81ad3fca73219ad6bb892f216db6d3871a5cf3b1f34c92 |