Name | apv JSON |
Version |
1.0.3
JSON |
| download |
home_page | https://github.com/acidvegas/apv |
Summary | Advanced Python Logging |
upload_time | 2024-11-27 03:18:25 |
maintainer | None |
docs_url | None |
author | acidvegas |
requires_python | None |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Advanced Python Logging (APV)
> Flexible & powerful logging solution for Python applications
![](./.screens/preview.png)
## 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)
- [Graylog Integration](#graylog-integration)
- [AWS CloudWatch Integration](#aws-cloudwatch-integration)
- [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. 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
```bash
# 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
```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.
- **ECS Logging**: Output logs in ECS format for better integration with [Elasticsearch](https://www.elastic.co/elasticsearch/)
- **Detailed Log Messages**: Option to include module name, function name, and line number in log messages.
- **Graylog Integration**: Send logs to a [Graylog](https://www.graylog.org/) server using GELF over UDP.
- **AWS CloudWatch Integration**: Send logs to [AWS CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html).
- **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
```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.')
```
### Graylog Integration
```python
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
```python
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
```python
import logging
import apv
# Set up ECS logging
apv.setup_logging(
level='INFO',
ecs_log=True
)
```
### 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,
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](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)
Raw data
{
"_id": null,
"home_page": "https://github.com/acidvegas/apv",
"name": "apv",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "acidvegas",
"author_email": "acid.vegas@acid.vegas",
"download_url": "https://files.pythonhosted.org/packages/fa/d6/2f0eb9767695697bfd66defcac7d9fb47a3c1cad8b2b49ec046e0dd6e813/apv-1.0.3.tar.gz",
"platform": null,
"description": "# Advanced Python Logging (APV)\n> Flexible & powerful logging solution for Python applications\n\n![](./.screens/preview.png)\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Features](#features)\n- [Configuration Options](#configuration-options)\n- [Usage](#usage)\n - [Basic Console Logging](#basic-console-logging)\n - [Console Logging with Details](#console-logging-with-details)\n - [File Logging with Rotation](#file-logging-with-rotation)\n - [File Logging with Compression and JSON Format](#file-logging-with-compression-and-json-format)\n - [Graylog Integration](#graylog-integration)\n - [AWS CloudWatch Integration](#aws-cloudwatch-integration)\n - [Mixing it all together](#mixing-it-all-together)\n\n## Introduction\nAPV 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 \u2013 a logging library that doesn't aim to revolutionize the field, but rather to streamline it.\n\n## Requirements\n- Python 3.10+\n\n## Installation\n\n### From PyPI\n```bash\n# Basic installation\npip install apv\n\n# With CloudWatch support\npip install apv[cloudwatch]\n\n# With ECS logging support\npip install apv[ecs]\n\n# With all optional dependencies\npip install \"apv[cloudwatch,ecs]\"\n```\n\n### From Source\n```bash\ngit clone https://github.com/acidvegas/apv\ncd apv\npip install .\n```\n\n## Features\n- **Console Logging with Colors**: Enhanced readability with colored log messages in the console.\n- **File Logging**: Write logs to files with support for log rotation based on size and number of backups.\n- **Log Compression**: Automatically compress old log files using gzip to save disk space.\n- **JSON Logging**: Output logs in JSON format for better structure and integration with log management systems.\n- **ECS Logging**: Output logs in ECS format for better integration with [Elasticsearch](https://www.elastic.co/elasticsearch/)\n- **Detailed Log Messages**: Option to include module name, function name, and line number in log messages.\n- **Graylog Integration**: Send logs to a [Graylog](https://www.graylog.org/) server using GELF over UDP.\n- **AWS CloudWatch Integration**: Send logs to [AWS CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html).\n- **Customizable Logging Levels**: Set the logging level to control verbosity.\n\n## Configuration Options\n\nThe `setup_logging` function accepts the following keyword arguments to customize logging behavior:\n\n| Name | Default | Description |\n|--------------------------|--------------------------|--------------------------------------------------------------------------------------|\n| `level` | `INFO` | The logging level. *(`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`)* |\n| `date_format` | `'%Y-%m-%d %H:%M:%S'` | The date format for log messages. |\n| `log_to_disk` | `False` | Whether to log to disk. |\n| `max_log_size` | `10*1024*1024` *(10 MB)* | The maximum size of log files before rotation *(in bytes)*. |\n| `max_backups` | `7` | The maximum number of backup log files to keep. |\n| `log_file_name` | `'app'` | The base name of the log file. |\n| `json_log` | `False` | Whether to log in JSON format. |\n| `ecs_log` | `False` | Whether to log in ECS format. |\n| `show_details` | `False` | Whether to include module name, function name, & line number in log messages. |\n| `compress_backups` | `False` | Whether to compress old log files using gzip. |\n| `enable_graylog` | `False` | Whether to enable logging to a Graylog server. |\n| `graylog_host` | `None` | The Graylog server host. *(Required if `enable_graylog` is `True`)* |\n| `graylog_port` | `None` | The Graylog server port. *(Required if `enable_graylog` is `True`)* |\n| `enable_cloudwatch` | `False` | Whether to enable logging to AWS CloudWatch Logs. |\n| `cloudwatch_group_name` | `None` | The name of the CloudWatch log group. *(Required if `enable_cloudwatch` is `True`)* |\n| `cloudwatch_stream_name` | `None` | The name of the CloudWatch log stream. *(Required if `enable_cloudwatch` is `True`)* |\n\n## Usage\n\n### Basic Console Logging\n\n```python\nimport logging\nimport apv\n\n# Set up basic console logging\napv.setup_logging(level='INFO')\n\nlogging.info('This is an info message.')\nlogging.error('This is an error message.')\n```\n\n### Console Logging with Details\n\n```python\nimport logging\nimport apv\n\n# Set up console logging with detailed information\napv.setup_logging(level='DEBUG', show_details=True)\n\nlogging.debug('Debug message with details.')\n```\n\n### File Logging with Rotation\n\n```python\nimport logging\nimport apv\n\n# Set up file logging with log rotation\napv.setup_logging(\n level='INFO',\n log_to_disk=True,\n max_log_size=10*1024*1024, # 10 MB\n max_backups=5,\n log_file_name='application_log'\n)\n\nlogging.info('This message will be logged to a file.')\n```\n\n### File Logging with Compression and JSON Format\n\n```python\nimport logging\nimport apv\n\n# Set up file logging with compression and JSON format\napv.setup_logging(\n level='DEBUG',\n log_to_disk=True,\n max_log_size=5*1024*1024, # 5 MB\n max_backups=7,\n log_file_name='json_log',\n json_log=True,\n compress_backups=True\n)\n\nlogging.debug('This is a debug message in JSON format.')\n```\n\n### Graylog Integration\n\n```python\nimport logging\nimport apv\n\n# Set up logging to Graylog server\napv.setup_logging(\n level='INFO',\n enable_graylog=True,\n graylog_host='graylog.example.com',\n graylog_port=12201\n)\n\nlogging.info('This message will be sent to Graylog.')\n```\n\n### AWS CloudWatch Integration\n\n```python\nimport logging\nimport apv\n\n# Set up logging to AWS CloudWatch Logs\napv.setup_logging(\n level='INFO',\n enable_cloudwatch=True,\n cloudwatch_group_name='my_log_group',\n cloudwatch_stream_name='my_log_stream'\n)\n\nlogging.info('This message will be sent to AWS CloudWatch.')\n```\n\n### ECS Logging\n\n```python\nimport logging\nimport apv\n\n# Set up ECS logging\napv.setup_logging(\n level='INFO',\n ecs_log=True\n)\n``` \n\n### Mixing it all together\n\n```python\nimport logging\nimport apv\n\n# Set up logging to all handlers\napv.setup_logging(\n level='DEBUG',\n log_to_disk=True,\n max_log_size=10*1024*1024,\n max_backups=7,\n log_file_name='app',\n json_log=True,\n compress_backups=True,\n enable_graylog=True,\n graylog_host='graylog.example.com',\n graylog_port=12201,\n enable_cloudwatch=True,\n cloudwatch_group_name='my_log_group',\n cloudwatch_stream_name='my_log_stream',\n show_details=True\n)\n```\n\n---\n\n###### Mirrors: [acid.vegas](https://git.acid.vegas/apv) \u2022 [SuperNETs](https://git.supernets.org/acidvegas/apv) \u2022 [GitHub](https://github.com/acidvegas/apv) \u2022 [GitLab](https://gitlab.com/acidvegas/apv) \u2022 [Codeberg](https://codeberg.org/acidvegas/apv)\n",
"bugtrack_url": null,
"license": null,
"summary": "Advanced Python Logging",
"version": "1.0.3",
"project_urls": {
"Bug Tracker": "https://github.com/acidvegas/apv/issues",
"Documentation": "https://github.com/acidvegas/apv/wiki",
"Homepage": "https://github.com/acidvegas/apv",
"Source Code": "https://github.com/acidvegas/apv"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f6e98028d4ee7583320458eab33b4bf19b12857e4086e939d3bee1b9adcbf084",
"md5": "dded151ec6d49dbcda87b5b075cfd157",
"sha256": "3abb6d6fc0ecbb2cac3256eb536b7971bde43be3c48a98fd22f37998c804b818"
},
"downloads": -1,
"filename": "apv-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dded151ec6d49dbcda87b5b075cfd157",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10394,
"upload_time": "2024-11-27T03:18:23",
"upload_time_iso_8601": "2024-11-27T03:18:23.291554Z",
"url": "https://files.pythonhosted.org/packages/f6/e9/8028d4ee7583320458eab33b4bf19b12857e4086e939d3bee1b9adcbf084/apv-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fad62f0eb9767695697bfd66defcac7d9fb47a3c1cad8b2b49ec046e0dd6e813",
"md5": "674b88f7d7e4eaa83b212f4686611b87",
"sha256": "024348bd1f39fbf4f11fd2a904112a7ace4d54103c89665d7d7f70b5eb01081d"
},
"downloads": -1,
"filename": "apv-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "674b88f7d7e4eaa83b212f4686611b87",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10876,
"upload_time": "2024-11-27T03:18:25",
"upload_time_iso_8601": "2024-11-27T03:18:25.034612Z",
"url": "https://files.pythonhosted.org/packages/fa/d6/2f0eb9767695697bfd66defcac7d9fb47a3c1cad8b2b49ec046e0dd6e813/apv-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-27 03:18:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "acidvegas",
"github_project": "apv",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "apv"
}