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