Metadata-Version: 2.3
Name: logreel
Version: 0.1.0
Summary: Application that retrieves logs from systems that aren’t natively supported by Google SecOps
Author: Simone Roma
Author-email: simone.roma@nomios.co.uk
Requires-Python: >=3.12,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: fastapi (>=0.115.3,<0.116.0)
Requires-Dist: pydantic-settings (>=2.6.0,<3.0.0)
Requires-Dist: setuptools (>=75.2.0,<76.0.0)
Requires-Dist: structlog (>=24.4.0,<25.0.0)
Requires-Dist: uvicorn (>=0.32.0,<0.33.0)
Description-Content-Type: text/markdown

# LogReel

![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/nomios-opensource/LogReel/publish.yml)
[![codecov](https://codecov.io/gh/nomios-opensource/LogReel/branch/develop/graph/badge.svg?token=iKZNzUr2LI)](https://codecov.io/gh/nomios-opensource/LogReel)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/LogReel)
![PyPI - Downloads](https://img.shields.io/pypi/dm/LogReel)
![GitHub License](https://img.shields.io/github/license/nomios-opensource/LogReel)

An open-source logging utility for reliable API-to-API log transport with modular plugin support.

`LogReel` is authored by [Simone Roma](https://github.com/devsimone), governed as a [benevolent dictatorship](CODE_OF_CONDUCT.md), and distributed under [license](LICENSE).

## Introduction

Some APIs don't support natively certain types of logs. To overcome this problem, LogReel allows the user to leverage a scalable and plugins based architecture on pre-defined interfaces. This is done in a secure and reliable way, allowing the target API to consume your stored logs.

## Features

- **Fetch the data from custom data sources**, based on the available API. 
- **Reliable**, thanks to its own mechanism that collect the logs starting from a precise snapshot, storing the previous location.
- **Quicly checks the status of your plugins**, feature available through the /health endpoint.
- **LogReel has the capacity of auto discoverability**. Whenever a plugin is available, LogReel can automatically discover it and integrate it.

## Installation

Install using poetry (if not installed `pip install poetry`), and then install the dependencies `poetry install`.

## Add the LogReel dependency in your plugin

LogReel component is reusable and needs to be added as a dependency in your plugins' repository through PyPI.
Reference the LogReel package in your pyproject.toml plugins' repository.

## How to make a plugin discoverable by the LogReel

You must register the plugin using entry points in your pyproject.toml. This mechanism allows the LogReel component to dynamically load plugins by name and group using the entry_points API.

```toml
[tool.poetry]
name = "example-plugin"
version = "1.0.0"
description = "An example plugin for the core component"
authors = ["User <user@example.com>"]

[tool.poetry.dependencies]
python = "^3.10"
logreel = "^0.1.0"

[tool.poetry.plugins."plugin_group_name"]
plugin_name = "module_path:PluginClass"
```

- plugin_group_name: The group under which the plugin is registered (e.g., logreel.sources or logreel.destinations).
- plugin_name: The name by which the plugin will be referenced.
  - module_path: The Python module where the plugin class resides.
  - PluginClass: The name of the plugin class to load.

## Versioning

Releases will follow semantic versioning (major.minor.patch). Before 1.0.0 breaking changes can be included in a minor release, therefore we highly recommend pinning this package.

## Contributing

Suggest a [feature]() or report a [bug](). Read our developer [guide](CONTRIBUTING.md).

## License

pytest-netconf is distributed under the Apache 2.0 [license](LICENSE).
