# **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"
}