apv


Nameapv JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/acidvegas/apv
SummaryAdvanced Python Logging
upload_time2024-11-27 03:18:25
maintainerNone
docs_urlNone
authoracidvegas
requires_pythonNone
licenseNone
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"
}
        
Elapsed time: 0.39480s