fxc-logger


Namefxc-logger JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/frexco-digital/fxc-logger.git
SummaryPython library for logging with colors and http status code.
upload_time2025-08-05 17:49:07
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseNone
keywords logs logging logger
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # **fxc-logger**

## Install

___

```bash
pip install fxc-logger
```

## Configure

___

```python
# main.py
from fxc_logger import PyLogger

logger = PyLogger(appname="my_app")
logger.http(message="Uma mensagem http qualquer", status_code=200, data={"name": "Um nome qualquer", "age": 22})
```

> 2022-09-02 14:05:59 | [HTTP] | | 9fd8… | Uma mensagem http qualquer | [STATUSCODE 200] | {"name": "Um nome qualquer", "age": 22}

## Correlation ID (Contexto)

Cada requisição ou mensagem pode ter um identificador único para facilitar filtros de log.
A biblioteca gera um UUID v4 automaticamente no primeiro log, mas você pode controlar
isso manualmente.

```python
from fxc_logger import PyLogger, correlation_scope, with_new_correlation_id

logger = PyLogger(appname="consumer")

# 1) Definindo manualmente
auto_id = correlation_scope()      # context-manager
with correlation_scope():          # gera novo UUID
    logger.info("log dentro do bloco")

# 2) Decorando callback do RabbitMQ / Kafka
@with_new_correlation_id
def callback(ch, method, props, body):
    logger.info("mensagem recebida", data=body)
```

*Todos* os logs emitidos dentro do bloco ou função decorada carregam o mesmo
Correlation ID, permitindo rastrear todo o fluxo.

## Log Types

___

| Tipo      | Description                                                        |
|-----------|--------------------------------------------------------------------|
| `error`   | Informar sobre exceptions tratadas                                 |
| `warning` | Informar eventos ou estados potencialmente prejudicias ao programa |
| `debug`   | Acompanhar eventos ou estados do programa                          |
| `info`    | Descrever infos detalhadas sobre o estado do programa              |
| `http`    | Informar dados de requests e responses feitas via http             |

## Middlewares

___

### django

```python
# httpLogger.py
from fxc_logger import PyLogger
from django.utils.deprecation import MiddlewareMixin

class HTTPLoggerMiddleware(MiddlewareMixin):
    def process_response(self, request, response):
        logger = PyLogger(appname="my_django_app")
        logger.http(message=f"{request.META.get('REMOTE_ADDR')} {request.method} {request.META.get('PATH_INFO')}",
                    status_code=response.status_code)
        return response
```

settings.py:
```python
MIDDLEWARE = [
    ...,
    'app.utils.httpLogger.HTTPLoggerMiddleware'
]
```

### Flask

```python
from flask import Flask, request, Response
from fxc_logger import PyLogger

app = Flask(__name__)
logger = PyLogger(appname="my_flask_app")

@app.after_request
def log_response(response: Response):
    logger.http(message=f"{request.remote_addr} {request.method} {request.path}",
                status_code=response.status_code)
    return response
```

## Alert

```python
from fxc_logger import PyLogger

logger = PyLogger(appname="my_app", group="warehouse")

# envia alerta (ENV=PRD)
logger.error("Falhou o checkout", status_code=500, data={"order_id": 123})

# não envia alerta
logger.error("Falhou o checkout de novo", status_code=500, alert=False)
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/frexco-digital/fxc-logger.git",
    "name": "fxc-logger",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "logs logging logger",
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/2b/9e/eeacd9bc8f5d1e237fe1c1430800ced0208f3b1979921376d2df677bf08d/fxc_logger-1.0.2.tar.gz",
    "platform": null,
    "description": "# **fxc-logger**\r\n\r\n## Install\r\n\r\n___\r\n\r\n```bash\r\npip install fxc-logger\r\n```\r\n\r\n## Configure\r\n\r\n___\r\n\r\n```python\r\n# main.py\r\nfrom fxc_logger import PyLogger\r\n\r\nlogger = PyLogger(appname=\"my_app\")\r\nlogger.http(message=\"Uma mensagem http qualquer\", status_code=200, data={\"name\": \"Um nome qualquer\", \"age\": 22})\r\n```\r\n\r\n> 2022-09-02 14:05:59 | [HTTP] | | 9fd8\u00e2\u20ac\u00a6 | Uma mensagem http qualquer | [STATUSCODE 200] | {\"name\": \"Um nome qualquer\", \"age\": 22}\r\n\r\n## Correlation ID (Contexto)\r\n\r\nCada requisi\u00c3\u00a7\u00c3\u00a3o ou mensagem pode ter um identificador \u00c3\u00banico para facilitar filtros de log.\r\nA biblioteca gera um UUID v4 automaticamente no primeiro log, mas voc\u00c3\u00aa pode controlar\r\nisso manualmente.\r\n\r\n```python\r\nfrom fxc_logger import PyLogger, correlation_scope, with_new_correlation_id\r\n\r\nlogger = PyLogger(appname=\"consumer\")\r\n\r\n# 1) Definindo manualmente\r\nauto_id = correlation_scope()      # context-manager\r\nwith correlation_scope():          # gera novo UUID\r\n    logger.info(\"log dentro do bloco\")\r\n\r\n# 2) Decorando callback do RabbitMQ / Kafka\r\n@with_new_correlation_id\r\ndef callback(ch, method, props, body):\r\n    logger.info(\"mensagem recebida\", data=body)\r\n```\r\n\r\n*Todos* os logs emitidos dentro do bloco ou fun\u00c3\u00a7\u00c3\u00a3o decorada carregam o mesmo\r\nCorrelation ID, permitindo rastrear todo o fluxo.\r\n\r\n## Log Types\r\n\r\n___\r\n\r\n| Tipo      | Description                                                        |\r\n|-----------|--------------------------------------------------------------------|\r\n| `error`   | Informar sobre exceptions tratadas                                 |\r\n| `warning` | Informar eventos ou estados potencialmente prejudicias ao programa |\r\n| `debug`   | Acompanhar eventos ou estados do programa                          |\r\n| `info`    | Descrever infos detalhadas sobre o estado do programa              |\r\n| `http`    | Informar dados de requests e responses feitas via http             |\r\n\r\n## Middlewares\r\n\r\n___\r\n\r\n### django\r\n\r\n```python\r\n# httpLogger.py\r\nfrom fxc_logger import PyLogger\r\nfrom django.utils.deprecation import MiddlewareMixin\r\n\r\nclass HTTPLoggerMiddleware(MiddlewareMixin):\r\n    def process_response(self, request, response):\r\n        logger = PyLogger(appname=\"my_django_app\")\r\n        logger.http(message=f\"{request.META.get('REMOTE_ADDR')} {request.method} {request.META.get('PATH_INFO')}\",\r\n                    status_code=response.status_code)\r\n        return response\r\n```\r\n\r\nsettings.py:\r\n```python\r\nMIDDLEWARE = [\r\n    ...,\r\n    'app.utils.httpLogger.HTTPLoggerMiddleware'\r\n]\r\n```\r\n\r\n### Flask\r\n\r\n```python\r\nfrom flask import Flask, request, Response\r\nfrom fxc_logger import PyLogger\r\n\r\napp = Flask(__name__)\r\nlogger = PyLogger(appname=\"my_flask_app\")\r\n\r\n@app.after_request\r\ndef log_response(response: Response):\r\n    logger.http(message=f\"{request.remote_addr} {request.method} {request.path}\",\r\n                status_code=response.status_code)\r\n    return response\r\n```\r\n\r\n## Alert\r\n\r\n```python\r\nfrom fxc_logger import PyLogger\r\n\r\nlogger = PyLogger(appname=\"my_app\", group=\"warehouse\")\r\n\r\n# envia alerta (ENV=PRD)\r\nlogger.error(\"Falhou o checkout\", status_code=500, data={\"order_id\": 123})\r\n\r\n# n\u00c3\u00a3o envia alerta\r\nlogger.error(\"Falhou o checkout de novo\", status_code=500, alert=False)\r\n```\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python library for logging with colors and http status code.",
    "version": "1.0.2",
    "project_urls": {
        "Homepage": "https://github.com/frexco-digital/fxc-logger.git"
    },
    "split_keywords": [
        "logs",
        "logging",
        "logger"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3a4564e9735813fdfca1a3338c9aec7465ff67dec87c5fddad600a7476a05755",
                "md5": "4fc1fd58ca54279d044c4f627ac5169e",
                "sha256": "7107c2e22f7d023c3473b0f0c31990c499d09f6f987e7a767d333d18654b2f62"
            },
            "downloads": -1,
            "filename": "fxc_logger-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4fc1fd58ca54279d044c4f627ac5169e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 5914,
            "upload_time": "2025-08-05T17:49:06",
            "upload_time_iso_8601": "2025-08-05T17:49:06.504036Z",
            "url": "https://files.pythonhosted.org/packages/3a/45/64e9735813fdfca1a3338c9aec7465ff67dec87c5fddad600a7476a05755/fxc_logger-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2b9eeeacd9bc8f5d1e237fe1c1430800ced0208f3b1979921376d2df677bf08d",
                "md5": "2826bf1731bbc81d4ff78b678ba8ce1d",
                "sha256": "7ff9a4dd6ccc80c622473218bb38f3779424465d62f1a85b99fa20a832a750d2"
            },
            "downloads": -1,
            "filename": "fxc_logger-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "2826bf1731bbc81d4ff78b678ba8ce1d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 6498,
            "upload_time": "2025-08-05T17:49:07",
            "upload_time_iso_8601": "2025-08-05T17:49:07.698254Z",
            "url": "https://files.pythonhosted.org/packages/2b/9e/eeacd9bc8f5d1e237fe1c1430800ced0208f3b1979921376d2df677bf08d/fxc_logger-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-05 17:49:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "frexco-digital",
    "github_project": "fxc-logger",
    "github_not_found": true,
    "lcname": "fxc-logger"
}
        
Elapsed time: 1.43763s