tai-alphi


Nametai-alphi JSON
Version 1.0.4 PyPI version JSON
download
home_pagehttps://www.triplealpha.in/es/
SummaryLogs y monitorización de recursos
upload_time2024-09-27 10:19:46
maintainerNone
docs_urlNone
authorMateoSaezMata
requires_python<4.0,>=3.10
licenseMIT
keywords logs cloud
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Alphi
*Monitorización de procesos a través de logs*

## Para qué sirve?
Escribe tus logs una vez y deja que el bot los envíe hacia diferentes rutas

## Uso básico

```python
from tai_alphi import Alphi

bot = Alphi()

logger = bot.get_logger()

logger.debug('Some DEBUG msg')
logger.info('Some INFO msg')
logger.warning('Some WARNING msg')
logger.error('Some ERROR msg')
logger.critical('Some CRITICAL msg')
```

## Instalación
**Poetry**
```bash
poetry add tai-alphi
```
**Pip**
```bash
pip install tai-alphi
```

#### Dependencias requeridas

`pydantic` `tomli`
> [!NOTE]
> Se instalan con el paquete

#### Dependencias opcionales
`pymongo` `logtail`
> [!WARNING]
> No se instalan automáticamente con el paquete  
> Deben instalarse por separado

## Rutas
El paquete permite actualmente enrutar logs hacia 4 destinos:
- Consola
- MSFT Teams
- MongoDB / CosmosDB
- Logtail
  
Las rutas se pueden configurar individualmente definiendo qué información (y de qué forma) va a llegar a cada una.

## Configuración
Para empezar a utilizar el bot no es necesario configurarlo, sin embargo su funcionalidad sería limitada.
> [!NOTE]
> Por defecto, el bot sin configuración está limitado a:
> - 1 logger
> - 1 ruta > Consola

La configuración del bot consiste en pasar una serie de `settings` que aportan versatilidad a la hora de organizar el flujo de información.

### Settings
Las settings se pueden definir como `dict` o escribiendo un archivo `.toml`

La sintaxis de `.toml` es human readable por lo que es la opción recomendada.

#### TOML
Para escribir el archivo `.toml` hay una [plantilla](examples/settings.toml) que describe las `settings` admitidas.

En general las configuraciones se construyen a partir de:
`[<logger_name>.<ruta>]`

Donde para cada `logger_name` podemos ir definiendo la configuración de cada una de sus `rutas`

**Ejemplo:**  
La siguiente configuración define el logger `my_logger` y enruta logs hacia:
- `consola`
- `teams` 
- `nosql`

> [!NOTE]
> La ruta `consola` viene activada por defecto

```toml
# settings.toml
[my_logger.teams]
enabled = true

[my_logger.nosql]
enabled = true
```

#### Credenciales
Para que las rutas `teams` `nosql` funcionen es necesario pasar credenciales de acceso. Esto debe hacerse desde el código por seguridad.

```python
# example.py
from tai_alphi import Alphi

settings = 'settings.toml'

bot = Alphi(settings)

bot.set_teams(webhook=<teams WEBHOOK>)

bot.set_nosql(
    user=<cosmos USER>,
    pwd=<cosmos PWD>,
    host=<cosmos HOST>,
    port=<cosmos PORT>,
    db_name=<cosmos DB>,
    collection_name=<cosmos COL>
)

my_logger = bot.get_logger()

my_logger.debug('Some DEBUG msg')
my_logger.info('Some INFO msg')
my_logger.warning('Some WARNING msg')
my_logger.error('Some ERROR msg')
my_logger.critical('Some CRITICAL msg')
```

Si unimos la configuración en `settings.toml` y las credenciales establecidas en `example.py` tenemos configurado `my_logger` para que emita los mensajes (con su contexto) hacia `consola` `teams` y `nosql`

### Documentación de la configuración
#### Rutas disponibles
  `consola` > emite logs por consola  
  `nosql` > emite logs a CosmosDB  
  `teams` > emite logs a un canal de Teams  
  `logtail` > emite logs a la plataforma de BetterStack

#### Parámetros globales de cada ruta
  `enabled` > determina si la ruta está activa o no  
  `log_level` > determina el límite inferior de los logs que serán enrutados  
  `display_info` > determina los segmentos que contextualizan a los logs  
  `time_format` > determina el formato del timestamp

#### Valores permitidos
  `enabled`: `bool` > true | false  
  `log_level`: `str` > 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'CRIT'  
  `display_info`: `list[str]` > ['asctime', 'filename', 'funcName', 'levelname',
                             'lineno', 'module', 'pathname']  
  `time_format`: `str` > https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

#### Parámetros específicos de cada ruta

`teams`  

  `project`: `str` > Título del proyecto  
  `pipeline`: `str` > Nombre del proceso  
  `notifications`: `list` > listado de correos a notificar ante error  

`nosql`  

  `expiration`: `float` > tiempo (en días) a partir del instante de emisión donde se eliminan los logs  

#### Argumentos por defecto de cada ruta

`consola`  

  `enabled`=true  
  `log_level`='INFO'  
  `display_info`=['asctime', 'levelname']  
  `time_format`='%H:%M:%S'  

`teams`

  `enabled`=false  
  `log_level`='INFO'  
  `display_info`=['asctime', 'levelname']  
  `time_format`='%H:%M:%S'  
  `project`='Project Name'  
  `pipeline`='Pipeline Name'  
  `notifications`=[]  

`nosql`  

  `enabled`=false  
  `log_level`='INFO'  
  `display_info`=['asctime', 'levelname']  
  `time_format`='%Y-%m-%d %H:%M:%S'  
  `expiration`=null (por defecto no elimina registros)  

`logtail`  

  `enabled`=false  
  `log_level`='INFO'  
  `display_info`=['asctime', 'levelname']  
  `time_format`='%Y-%m-%d %H:%M:%S'  

## Uso avanzado
El paquete permite definir/configurar más de un logger y sus rutas asociadas. Lo que determina la configuración de cada logger es su `logger_name`.

**Ejemplo:**  
La siguiente configuración dos loggers `logger1` y `logger2`  
Donde:  
`logger1` enruta hacia `consola` + `teams`  
`logger2` enruta hacia `consola` + `nosql`
> [!NOTE]
> La ruta `consola` viene activada por defecto

```toml
# settings.toml
[logger1.teams]
enabled = true

[logger2.nosql]
enabled = true
```
Aquí la clave consiste en capturar los dos loggers en variables diferentes:
```python
# example.py
from tai_alphi import Alphi

settings = 'settings.toml'

bot = Alphi(settings)

bot.set_teams(webhook=<teams WEBHOOK>)

bot.set_nosql(
    user=<cosmos USER>,
    pwd=<cosmos PWD>,
    host=<cosmos HOST>,
    port=<cosmos PORT>,
    db_name=<cosmos DB>,
    collection_name=<cosmos COL>
)

logger1 = bot.get_logger(logger_name='logger1')
logger2 = bot.get_logger(logger_name='logger2')

logger1.debug('Some DEBUG msg') # consola + teams
logger1.info('Some INFO msg') # consola + teams
logger1.warning('Some WARNING msg') # consola + teams

logger2.error('Some ERROR msg') # consola + nosql
logger2.critical('Some CRITICAL msg') # consola + nosql
```

Para terminar si añadimos un tercer logger `logger3` y queremos que enrute hacia `consola` y `nosql` **pero en una colección distinta hacia la que enruta `logger2`** sería:

```toml
# settings.toml
[logger1.teams]
enabled = true

[logger2.nosql]
enabled = true

[logger3.nosql]
enabled = true
```
Aquí la clave consiste en capturar los dos loggers en variables diferentes:
```python
# example.py
from tai_alphi import Alphi

settings = 'settings.toml'

bot = Alphi(settings)

bot.set_teams(webhook=<teams WEBHOOK>)

bot.set_nosql(
    user=<cosmos USER>,
    pwd=<cosmos PWD>,
    host=<cosmos HOST>,
    port=<cosmos PORT>,
    db_name=<cosmos DB>,
    collection_name=<cosmos COL>
)

logger1 = bot.get_logger(logger_name='logger1')
logger2 = bot.get_logger(logger_name='logger2')
logger3 = bot.get_logger(logger_name='logger3')

logger3.set_nosql_collection(collection_name='new_col')

logger1.debug('Some DEBUG msg') # consola + teams
logger1.info('Some INFO msg') # consola + teams
logger1.warning('Some WARNING msg') # consola + teams

logger2.error('Some ERROR msg') # consola + nosql
logger2.critical('Some CRITICAL msg') # consola + nosql

logger3.error('Some ERROR msg') # consola + nosql (new_col)
logger3.critical('Some CRITICAL msg') # consola + nosql (new_col)
```

## Desarrollo interno

La librería `tai_alphi` es una extensión personalizada del módulo de `logging` de Python que proporciona funcionalidad adicional para registrar logs en varios destinos, incluidos bases de datos NoSQL y Microsoft Teams.

## Core

### class `Alphi`

La clase `Alphi` hereda de `AlphiConfig` y sirve como la interfaz principal para crear y gestionar loggers.

#### Parámetros

- **`settings`**: `os.PathLike | dict | None` (default: `None`)
  - Entrada de la configuración de los loggers

#### Métodos

**`get_logger(logger_name: str=None, dev: bool=False, exec_info: bool=False) -> LoggerFactory`**

- `logger_name`: devuelve el logger especificado en la configuración.
  - Si `logger_name=None`:
    - Si las `settings` del bot contienen solo un logger configurado, lo captura
    - Si no se han especificado `settings` devuelve un logger por defecto que solo emite por `consola`
    - Si se ha especificado más de un logger en `settings` devuelve un error.
- `dev`: desactiva todas las rutas a excepción de la consola
- `exec_info`: añade el traceback a los logs superiores a 'ERROR'

**`set_nosql(self, user: str, pwd: str, host: str, port: int, db_name: str, collection_name: str) -> CosmosDB`**
- `user` `pwd` Credenciales de la DB
- `host` `port` Información del servidor
- `db_name` `collection_name` Información del almacenamiento

**`set_logtail(self, token: str) -> str`**  

**`set_teams(self, webhook: str) -> str`**

### class `AlphiConfig`

La clase `AlphiConfig` es responsable de gestionar las configuraciones para la librería `tai-alphi`.

#### Atributos

- **`config_file`**: `str`
  - Ruta al archivo de configuración (generalmente en formato TOML).

- **`_config`**: `Optional[ConfigValidator]`
  - Contiene el objeto de configuración validado.

- **`_logtail_token`**: `Optional[LogtailConnectionConfig]`
  - Contiene la configuración de conexión de Logtail.

- **`_nosqlDB_conn_config`**: `Optional[NoSQLDBConnectionConfig]`
  - Contiene la configuración de conexión de la base de datos NoSQL.

- **`_teams_conn_config`**: `Optional[TeamsConnectionConfig]`
  - Contiene la configuración de conexión de Microsoft Teams.

#### Métodos

- **`_set_config(self) -> None`**
  - Carga y valida el archivo de configuración especificado por `config_file`.

- **`set_nosqlDB_conn_config(self, db_name: str, db_collection_name: str, db_user: str, db_password: str, db_host: str = 'localhost', db_port: int = 27017) -> None`**
  - Configura los parámetros de conexión para una base de datos NoSQL.
  - **Parámetros**:
    - `db_name` (str): El nombre de la base de datos NoSQL.
    - `db_collection_name` (str): El nombre de la colección de la base de datos.
    - `db_user` (str): El nombre de usuario para la base de datos.
    - `db_password` (str): La contraseña para el usuario de la base de datos.
    - `db_host` (str, opcional): El nombre del host para el servidor de la base de datos. Por defecto es `'localhost'`.
    - `db_port` (int, opcional): El número de puerto para el servidor de la base de datos. Por defecto es `27017`.

- **`set_logtail_token(self, token: str) -> None`**
  - Actualiza la configuración del token de Logtail.
  - **Parámetros**:
    - `token` (str): La cadena del token para la autenticación en Logtail.


### 3. Clase `AlphiLogger`

La clase `AlphiLogger` extiende la clase `logging.Logger` y proporciona características adicionales para el formateo y manejo personalizados.

#### Atributos

- **`_nosqlDB_conn_config`**: `NoSQLDBConnectionConfig`
  - Almacena la configuración para la conexión a la base de datos NoSQL.

- **`_logtail_token`**: `LogtailConnectionConfig`
  - Almacena la configuración para la integración con Logtail.

- **`config`**: `AlphiConfig`
  - Almacena el objeto de configuración del logger.

#### Métodos

- **`__set_formatter(self, handler_type: str, config: dict) -> None`**
  - Establece el formateador para un tipo de manejador dado. Los tipos de formateadores disponibles incluyen:
    - `ConsoleFormatter` (hereda de `BaseFormatter`)
    - `DictFormatter` (hereda de `BaseFormatter`)
    - `TeamsFormatter` (hereda de `logging.Formatter`)

- **`__create_handler(self, handler_type: str, config: dict) -> logging.Handler`**
  - Crea un manejador de logs basado en el tipo y la configuración especificados.
  - **Parámetros**:
    - `handler_type` (str): El tipo de manejador a crear (por ejemplo, `'console'`, `'file'`, `'teams'`).
    - `config` (dict): Un diccionario con la configuración específica para el manejador.

- **`__set_handlers(self) -> None`**
  - Configura y establece los manejadores para la instancia de `AlphiLogger`. Los posibles manejadores incluyen:
    - `ConsoleHandler` (hereda de `StreamHandler`)
    - `CosmosHandler` (hereda de `Handler`)
    - `TeamsHandler` (hereda de `Handler`)

- **`__set_logger(self) -> None`**
  - Llama a `__set_handlers` para configurar los manejadores del `AlphiLogger`.
            

Raw data

            {
    "_id": null,
    "home_page": "https://www.triplealpha.in/es/",
    "name": "tai-alphi",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "logs, cloud",
    "author": "MateoSaezMata",
    "author_email": "msaez@triplealpha.in",
    "download_url": "https://files.pythonhosted.org/packages/8d/70/28abac89d584b96a4d36974da0ff2d341d9a8edb41b7850fce3391577b7f/tai_alphi-1.0.4.tar.gz",
    "platform": null,
    "description": "# Alphi\n*Monitorizaci\u00f3n de procesos a trav\u00e9s de logs*\n\n## Para qu\u00e9 sirve?\nEscribe tus logs una vez y deja que el bot los env\u00ede hacia diferentes rutas\n\n## Uso b\u00e1sico\n\n```python\nfrom tai_alphi import Alphi\n\nbot = Alphi()\n\nlogger = bot.get_logger()\n\nlogger.debug('Some DEBUG msg')\nlogger.info('Some INFO msg')\nlogger.warning('Some WARNING msg')\nlogger.error('Some ERROR msg')\nlogger.critical('Some CRITICAL msg')\n```\n\n## Instalaci\u00f3n\n**Poetry**\n```bash\npoetry add tai-alphi\n```\n**Pip**\n```bash\npip install tai-alphi\n```\n\n#### Dependencias requeridas\n\n`pydantic` `tomli`\n> [!NOTE]\n> Se instalan con el paquete\n\n#### Dependencias opcionales\n`pymongo` `logtail`\n> [!WARNING]\n> No se instalan autom\u00e1ticamente con el paquete  \n> Deben instalarse por separado\n\n## Rutas\nEl paquete permite actualmente enrutar logs hacia 4 destinos:\n- Consola\n- MSFT Teams\n- MongoDB / CosmosDB\n- Logtail\n  \nLas rutas se pueden configurar individualmente definiendo qu\u00e9 informaci\u00f3n (y de qu\u00e9 forma) va a llegar a cada una.\n\n## Configuraci\u00f3n\nPara empezar a utilizar el bot no es necesario configurarlo, sin embargo su funcionalidad ser\u00eda limitada.\n> [!NOTE]\n> Por defecto, el bot sin configuraci\u00f3n est\u00e1 limitado a:\n> - 1 logger\n> - 1 ruta > Consola\n\nLa configuraci\u00f3n del bot consiste en pasar una serie de `settings` que aportan versatilidad a la hora de organizar el flujo de informaci\u00f3n.\n\n### Settings\nLas settings se pueden definir como `dict` o escribiendo un archivo `.toml`\n\nLa sintaxis de `.toml` es human readable por lo que es la opci\u00f3n recomendada.\n\n#### TOML\nPara escribir el archivo `.toml` hay una [plantilla](examples/settings.toml) que describe las `settings` admitidas.\n\nEn general las configuraciones se construyen a partir de:\n`[<logger_name>.<ruta>]`\n\nDonde para cada `logger_name` podemos ir definiendo la configuraci\u00f3n de cada una de sus `rutas`\n\n**Ejemplo:**  \nLa siguiente configuraci\u00f3n define el logger `my_logger` y enruta logs hacia:\n- `consola`\n- `teams` \n- `nosql`\n\n> [!NOTE]\n> La ruta `consola` viene activada por defecto\n\n```toml\n# settings.toml\n[my_logger.teams]\nenabled = true\n\n[my_logger.nosql]\nenabled = true\n```\n\n#### Credenciales\nPara que las rutas `teams` `nosql` funcionen es necesario pasar credenciales de acceso. Esto debe hacerse desde el c\u00f3digo por seguridad.\n\n```python\n# example.py\nfrom tai_alphi import Alphi\n\nsettings = 'settings.toml'\n\nbot = Alphi(settings)\n\nbot.set_teams(webhook=<teams WEBHOOK>)\n\nbot.set_nosql(\n    user=<cosmos USER>,\n    pwd=<cosmos PWD>,\n    host=<cosmos HOST>,\n    port=<cosmos PORT>,\n    db_name=<cosmos DB>,\n    collection_name=<cosmos COL>\n)\n\nmy_logger = bot.get_logger()\n\nmy_logger.debug('Some DEBUG msg')\nmy_logger.info('Some INFO msg')\nmy_logger.warning('Some WARNING msg')\nmy_logger.error('Some ERROR msg')\nmy_logger.critical('Some CRITICAL msg')\n```\n\nSi unimos la configuraci\u00f3n en `settings.toml` y las credenciales establecidas en `example.py` tenemos configurado `my_logger` para que emita los mensajes (con su contexto) hacia `consola` `teams` y `nosql`\n\n### Documentaci\u00f3n de la configuraci\u00f3n\n#### Rutas disponibles\n  `consola` > emite logs por consola  \n  `nosql` > emite logs a CosmosDB  \n  `teams` > emite logs a un canal de Teams  \n  `logtail` > emite logs a la plataforma de BetterStack\n\n#### Par\u00e1metros globales de cada ruta\n  `enabled` > determina si la ruta est\u00e1 activa o no  \n  `log_level` > determina el l\u00edmite inferior de los logs que ser\u00e1n enrutados  \n  `display_info` > determina los segmentos que contextualizan a los logs  \n  `time_format` > determina el formato del timestamp\n\n#### Valores permitidos\n  `enabled`: `bool` > true | false  \n  `log_level`: `str` > 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'CRIT'  \n  `display_info`: `list[str]` > ['asctime', 'filename', 'funcName', 'levelname',\n                             'lineno', 'module', 'pathname']  \n  `time_format`: `str` > https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior\n\n#### Par\u00e1metros espec\u00edficos de cada ruta\n\n`teams`  \n\n  `project`: `str` > T\u00edtulo del proyecto  \n  `pipeline`: `str` > Nombre del proceso  \n  `notifications`: `list` > listado de correos a notificar ante error  \n\n`nosql`  \n\n  `expiration`: `float` > tiempo (en d\u00edas) a partir del instante de emisi\u00f3n donde se eliminan los logs  \n\n#### Argumentos por defecto de cada ruta\n\n`consola`  \n\n  `enabled`=true  \n  `log_level`='INFO'  \n  `display_info`=['asctime', 'levelname']  \n  `time_format`='%H:%M:%S'  \n\n`teams`\n\n  `enabled`=false  \n  `log_level`='INFO'  \n  `display_info`=['asctime', 'levelname']  \n  `time_format`='%H:%M:%S'  \n  `project`='Project Name'  \n  `pipeline`='Pipeline Name'  \n  `notifications`=[]  \n\n`nosql`  \n\n  `enabled`=false  \n  `log_level`='INFO'  \n  `display_info`=['asctime', 'levelname']  \n  `time_format`='%Y-%m-%d %H:%M:%S'  \n  `expiration`=null (por defecto no elimina registros)  \n\n`logtail`  \n\n  `enabled`=false  \n  `log_level`='INFO'  \n  `display_info`=['asctime', 'levelname']  \n  `time_format`='%Y-%m-%d %H:%M:%S'  \n\n## Uso avanzado\nEl paquete permite definir/configurar m\u00e1s de un logger y sus rutas asociadas. Lo que determina la configuraci\u00f3n de cada logger es su `logger_name`.\n\n**Ejemplo:**  \nLa siguiente configuraci\u00f3n dos loggers `logger1` y `logger2`  \nDonde:  \n`logger1` enruta hacia `consola` + `teams`  \n`logger2` enruta hacia `consola` + `nosql`\n> [!NOTE]\n> La ruta `consola` viene activada por defecto\n\n```toml\n# settings.toml\n[logger1.teams]\nenabled = true\n\n[logger2.nosql]\nenabled = true\n```\nAqu\u00ed la clave consiste en capturar los dos loggers en variables diferentes:\n```python\n# example.py\nfrom tai_alphi import Alphi\n\nsettings = 'settings.toml'\n\nbot = Alphi(settings)\n\nbot.set_teams(webhook=<teams WEBHOOK>)\n\nbot.set_nosql(\n    user=<cosmos USER>,\n    pwd=<cosmos PWD>,\n    host=<cosmos HOST>,\n    port=<cosmos PORT>,\n    db_name=<cosmos DB>,\n    collection_name=<cosmos COL>\n)\n\nlogger1 = bot.get_logger(logger_name='logger1')\nlogger2 = bot.get_logger(logger_name='logger2')\n\nlogger1.debug('Some DEBUG msg') # consola + teams\nlogger1.info('Some INFO msg') # consola + teams\nlogger1.warning('Some WARNING msg') # consola + teams\n\nlogger2.error('Some ERROR msg') # consola + nosql\nlogger2.critical('Some CRITICAL msg') # consola + nosql\n```\n\nPara terminar si a\u00f1adimos un tercer logger `logger3` y queremos que enrute hacia `consola` y `nosql` **pero en una colecci\u00f3n distinta hacia la que enruta `logger2`** ser\u00eda:\n\n```toml\n# settings.toml\n[logger1.teams]\nenabled = true\n\n[logger2.nosql]\nenabled = true\n\n[logger3.nosql]\nenabled = true\n```\nAqu\u00ed la clave consiste en capturar los dos loggers en variables diferentes:\n```python\n# example.py\nfrom tai_alphi import Alphi\n\nsettings = 'settings.toml'\n\nbot = Alphi(settings)\n\nbot.set_teams(webhook=<teams WEBHOOK>)\n\nbot.set_nosql(\n    user=<cosmos USER>,\n    pwd=<cosmos PWD>,\n    host=<cosmos HOST>,\n    port=<cosmos PORT>,\n    db_name=<cosmos DB>,\n    collection_name=<cosmos COL>\n)\n\nlogger1 = bot.get_logger(logger_name='logger1')\nlogger2 = bot.get_logger(logger_name='logger2')\nlogger3 = bot.get_logger(logger_name='logger3')\n\nlogger3.set_nosql_collection(collection_name='new_col')\n\nlogger1.debug('Some DEBUG msg') # consola + teams\nlogger1.info('Some INFO msg') # consola + teams\nlogger1.warning('Some WARNING msg') # consola + teams\n\nlogger2.error('Some ERROR msg') # consola + nosql\nlogger2.critical('Some CRITICAL msg') # consola + nosql\n\nlogger3.error('Some ERROR msg') # consola + nosql (new_col)\nlogger3.critical('Some CRITICAL msg') # consola + nosql (new_col)\n```\n\n## Desarrollo interno\n\nLa librer\u00eda `tai_alphi` es una extensi\u00f3n personalizada del m\u00f3dulo de `logging` de Python que proporciona funcionalidad adicional para registrar logs en varios destinos, incluidos bases de datos NoSQL y Microsoft Teams.\n\n## Core\n\n### class `Alphi`\n\nLa clase `Alphi` hereda de `AlphiConfig` y sirve como la interfaz principal para crear y gestionar loggers.\n\n#### Par\u00e1metros\n\n- **`settings`**: `os.PathLike | dict | None` (default: `None`)\n  - Entrada de la configuraci\u00f3n de los loggers\n\n#### M\u00e9todos\n\n**`get_logger(logger_name: str=None, dev: bool=False, exec_info: bool=False) -> LoggerFactory`**\n\n- `logger_name`: devuelve el logger especificado en la configuraci\u00f3n.\n  - Si `logger_name=None`:\n    - Si las `settings` del bot contienen solo un logger configurado, lo captura\n    - Si no se han especificado `settings` devuelve un logger por defecto que solo emite por `consola`\n    - Si se ha especificado m\u00e1s de un logger en `settings` devuelve un error.\n- `dev`: desactiva todas las rutas a excepci\u00f3n de la consola\n- `exec_info`: a\u00f1ade el traceback a los logs superiores a 'ERROR'\n\n**`set_nosql(self, user: str, pwd: str, host: str, port: int, db_name: str, collection_name: str) -> CosmosDB`**\n- `user` `pwd` Credenciales de la DB\n- `host` `port` Informaci\u00f3n del servidor\n- `db_name` `collection_name` Informaci\u00f3n del almacenamiento\n\n**`set_logtail(self, token: str) -> str`**  \n\n**`set_teams(self, webhook: str) -> str`**\n\n### class `AlphiConfig`\n\nLa clase `AlphiConfig` es responsable de gestionar las configuraciones para la librer\u00eda `tai-alphi`.\n\n#### Atributos\n\n- **`config_file`**: `str`\n  - Ruta al archivo de configuraci\u00f3n (generalmente en formato TOML).\n\n- **`_config`**: `Optional[ConfigValidator]`\n  - Contiene el objeto de configuraci\u00f3n validado.\n\n- **`_logtail_token`**: `Optional[LogtailConnectionConfig]`\n  - Contiene la configuraci\u00f3n de conexi\u00f3n de Logtail.\n\n- **`_nosqlDB_conn_config`**: `Optional[NoSQLDBConnectionConfig]`\n  - Contiene la configuraci\u00f3n de conexi\u00f3n de la base de datos NoSQL.\n\n- **`_teams_conn_config`**: `Optional[TeamsConnectionConfig]`\n  - Contiene la configuraci\u00f3n de conexi\u00f3n de Microsoft Teams.\n\n#### M\u00e9todos\n\n- **`_set_config(self) -> None`**\n  - Carga y valida el archivo de configuraci\u00f3n especificado por `config_file`.\n\n- **`set_nosqlDB_conn_config(self, db_name: str, db_collection_name: str, db_user: str, db_password: str, db_host: str = 'localhost', db_port: int = 27017) -> None`**\n  - Configura los par\u00e1metros de conexi\u00f3n para una base de datos NoSQL.\n  - **Par\u00e1metros**:\n    - `db_name` (str): El nombre de la base de datos NoSQL.\n    - `db_collection_name` (str): El nombre de la colecci\u00f3n de la base de datos.\n    - `db_user` (str): El nombre de usuario para la base de datos.\n    - `db_password` (str): La contrase\u00f1a para el usuario de la base de datos.\n    - `db_host` (str, opcional): El nombre del host para el servidor de la base de datos. Por defecto es `'localhost'`.\n    - `db_port` (int, opcional): El n\u00famero de puerto para el servidor de la base de datos. Por defecto es `27017`.\n\n- **`set_logtail_token(self, token: str) -> None`**\n  - Actualiza la configuraci\u00f3n del token de Logtail.\n  - **Par\u00e1metros**:\n    - `token` (str): La cadena del token para la autenticaci\u00f3n en Logtail.\n\n\n### 3. Clase `AlphiLogger`\n\nLa clase `AlphiLogger` extiende la clase `logging.Logger` y proporciona caracter\u00edsticas adicionales para el formateo y manejo personalizados.\n\n#### Atributos\n\n- **`_nosqlDB_conn_config`**: `NoSQLDBConnectionConfig`\n  - Almacena la configuraci\u00f3n para la conexi\u00f3n a la base de datos NoSQL.\n\n- **`_logtail_token`**: `LogtailConnectionConfig`\n  - Almacena la configuraci\u00f3n para la integraci\u00f3n con Logtail.\n\n- **`config`**: `AlphiConfig`\n  - Almacena el objeto de configuraci\u00f3n del logger.\n\n#### M\u00e9todos\n\n- **`__set_formatter(self, handler_type: str, config: dict) -> None`**\n  - Establece el formateador para un tipo de manejador dado. Los tipos de formateadores disponibles incluyen:\n    - `ConsoleFormatter` (hereda de `BaseFormatter`)\n    - `DictFormatter` (hereda de `BaseFormatter`)\n    - `TeamsFormatter` (hereda de `logging.Formatter`)\n\n- **`__create_handler(self, handler_type: str, config: dict) -> logging.Handler`**\n  - Crea un manejador de logs basado en el tipo y la configuraci\u00f3n especificados.\n  - **Par\u00e1metros**:\n    - `handler_type` (str): El tipo de manejador a crear (por ejemplo, `'console'`, `'file'`, `'teams'`).\n    - `config` (dict): Un diccionario con la configuraci\u00f3n espec\u00edfica para el manejador.\n\n- **`__set_handlers(self) -> None`**\n  - Configura y establece los manejadores para la instancia de `AlphiLogger`. Los posibles manejadores incluyen:\n    - `ConsoleHandler` (hereda de `StreamHandler`)\n    - `CosmosHandler` (hereda de `Handler`)\n    - `TeamsHandler` (hereda de `Handler`)\n\n- **`__set_logger(self) -> None`**\n  - Llama a `__set_handlers` para configurar los manejadores del `AlphiLogger`.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Logs y monitorizaci\u00f3n de recursos",
    "version": "1.0.4",
    "project_urls": {
        "Homepage": "https://www.triplealpha.in/es/",
        "Repository": "https://github.com/triplealpha-innovation/tai-alphi"
    },
    "split_keywords": [
        "logs",
        " cloud"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fefb046a084c82413e44eb09fa007fe4f0f7a0c5381b24ae58576f56c46ed347",
                "md5": "3282d5251f88ad2c3ebff1835ee35dbb",
                "sha256": "0590e9e8e582799c42b733fc66e41ce131fe8603853192abbed75ee76510cf5a"
            },
            "downloads": -1,
            "filename": "tai_alphi-1.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3282d5251f88ad2c3ebff1835ee35dbb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 35257,
            "upload_time": "2024-09-27T10:19:45",
            "upload_time_iso_8601": "2024-09-27T10:19:45.188051Z",
            "url": "https://files.pythonhosted.org/packages/fe/fb/046a084c82413e44eb09fa007fe4f0f7a0c5381b24ae58576f56c46ed347/tai_alphi-1.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8d7028abac89d584b96a4d36974da0ff2d341d9a8edb41b7850fce3391577b7f",
                "md5": "9c847f5cb96bdafd5259589c53d6df2f",
                "sha256": "43fd68331ef17b07a4b02ae344e7fa3353009e4b44a2d24279dd4ce05a9db380"
            },
            "downloads": -1,
            "filename": "tai_alphi-1.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "9c847f5cb96bdafd5259589c53d6df2f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 31449,
            "upload_time": "2024-09-27T10:19:46",
            "upload_time_iso_8601": "2024-09-27T10:19:46.416305Z",
            "url": "https://files.pythonhosted.org/packages/8d/70/28abac89d584b96a4d36974da0ff2d341d9a8edb41b7850fce3391577b7f/tai_alphi-1.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-27 10:19:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "triplealpha-innovation",
    "github_project": "tai-alphi",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "tai-alphi"
}
        
Elapsed time: 0.85193s