Skip to main content

Cliente assíncrono para envio de logs para a API DataWake

Project description

DataWake Logger

Cliente assíncrono em Python para envio de logs para a API DataWake.

🚀 Características

  • Assíncrono: Não bloqueia a execução do seu código
  • Fire and Forget: Os logs são enviados em background
  • Context Manager: Gerenciamento automático de recursos
  • Type Hints: Código totalmente tipado
  • Configuração via .env: Suporte a variáveis de ambiente
  • SSL Configurável: Funciona em ambientes de desenvolvimento e produção

📦 Instalação

pip install datawake-logger

Ou para instalação em modo de desenvolvimento:

pip install datawake-logger[dev]

🔧 Configuração

Usando Variáveis de Ambiente

Crie um arquivo .env na raiz do seu projeto:

LOG_API_URI=sua_uri
LOG_API_USER=seu_usuario
LOG_API_PASSWORD=sua_senha
SISTEMA_ORIGEM_LOG=nome_do_seu_sistema
USUARIO_LOG=identificador_usuario

Usando Configuração Direta

Você também pode configurar diretamente no código:

from datawake_logger import Logger, MessageLogger

logger = Logger(
    uri="https://sua_url",
    sistema="meu_sistema",
    username="usuario_app",
    api_user="api_user",
    api_password="api_password",
    cliente="meu_cliente"
)

📖 Uso Básico

Exemplo 1: Usando variáveis de ambiente

import asyncio
from datawake_logger import Logger, MessageLogger

async def main():
    # Carrega configurações do .env automaticamente
    async with Logger.from_env(cliente="MeuApp") as logger:
        logger.log(
            MessageLogger.INFO,
            "Aplicação iniciada",
            rotina="inicializacao",
            output_print=True
        )
        
        logger.log(
            MessageLogger.DEBUG,
            "Processando dados",
            rotina="processamento",
            tabela="usuarios",
            output_print=True
        )
        
        logger.log(
            MessageLogger.ERROR,
            "Erro ao conectar ao banco",
            rotina="conexao_db",
            output_print=True
        )

if __name__ == "__main__":
    asyncio.run(main())

Exemplo 2: Configuração manual

import asyncio
from datawake_logger import Logger, MessageLogger

async def main():
    async with Logger(
        uri="sua_uri",
        sistema="meu_sistema",
        username="usuario_app",
        api_user="api_user",
        api_password="api_password",
        cliente="meu_cliente",
        ssl_verify=False  # Apenas para desenvolvimento
    ) as logger:
        
        logger.log(
            MessageLogger.WARN,
            "Processamento demorado detectado",
            rotina="etl_process",
            tabela="sales_data",
            output_print=True
        )

if __name__ == "__main__":
    asyncio.run(main())

Exemplo 3: Integração com PySpark

from pyspark.sql import SparkSession
from datawake_logger import Logger, MessageLogger
import asyncio

async def process_spark_job():
    spark = SparkSession.builder.appName("ETL").getOrCreate()
    
    async with Logger.from_env(cliente="SparkETL") as logger:
        logger.log(
            MessageLogger.INFO,
            "Iniciando job Spark",
            rotina="spark_etl",
            output_print=True
        )
        
        try:
            # Seu código Spark aqui
            df = spark.read.parquet("s3://bucket/data")
            
            logger.log(
                MessageLogger.INFO,
                f"Lidos {df.count()} registros",
                rotina="spark_etl",
                tabela="raw_data",
                output_print=True
            )
            
        except Exception as e:
            logger.log(
                MessageLogger.ERROR,
                f"Erro no job: {str(e)}",
                rotina="spark_etl",
                output_print=True
            )
            raise

if __name__ == "__main__":
    asyncio.run(process_spark_job())

📊 Níveis de Log

A biblioteca suporta 5 níveis de log:

  • MessageLogger.INFO - Informações gerais
  • MessageLogger.DEBUG - Informações de debug
  • MessageLogger.WARN - Avisos
  • MessageLogger.ERROR - Erros
  • MessageLogger.AVISO - Avisos especiais

🔍 Parâmetros do Método log()

Parâmetro Tipo Obrigatório Descrição
level MessageLogger ✅ Sim Nível do log
mensagem str ✅ Sim Mensagem a ser logada
rotina str ❌ Não Nome da rotina em execução
tabela str ❌ Não Nome da tabela do banco de dados
topico str ❌ Não Nome do tópico Kafka
op str ❌ Não Ordem de produção
unidade_producao str ❌ Não Unidade de produção
output_print bool ❌ Não Imprimir no console (padrão: False)

🎯 Recursos Avançados

Hash ID Único

Cada instância do Logger gera um hash ID único de 128 bits que é automaticamente anexado a todas as mensagens, permitindo rastrear logs da mesma sessão.

Gerenciamento de Tarefas

O Logger mantém controle de todas as tarefas assíncronas pendentes e garante que todas sejam finalizadas antes de fechar a sessão.

SSL Configurável

Para ambientes de desenvolvimento, você pode desabilitar a verificação SSL:

async with Logger.from_env(
    cliente="DevApp",
    ssl_verify=False  # Desabilita verificação SSL
) as logger:
    # seu código aqui
    pass

🧪 Testes

Execute os testes com:

pytest tests/

Com cobertura:

pytest --cov=datawake_logger tests/

🤝 Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. Abra um Pull Request

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👥 Autores

🐛 Reportar Problemas

Encontrou um bug? Abra uma issue

📚 Documentação Adicional

Para mais informações sobre a API DataWake, consulte a documentação oficial em https://docs.datawake.cloud

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datawake_logger-1.0.1.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datawake_logger-1.0.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file datawake_logger-1.0.1.tar.gz.

File metadata

  • Download URL: datawake_logger-1.0.1.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for datawake_logger-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a044ab8a3f7051a3743672cdf603b1614140bcf8e6df4b7ea236025425e7d200
MD5 8b5c3761d0614af0fb7bc54ea562c3a3
BLAKE2b-256 ae2e8b1a492404d0e90a2a1d7445a6523d55bff02196e0c2be059ad2bf6cdd98

See more details on using hashes here.

File details

Details for the file datawake_logger-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: datawake_logger-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for datawake_logger-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9fa7487786a021a493db23d53d441a383ec21d87eeb922caff2476a30baf770c
MD5 66691ecbd46efc30a0ba6055e74a0935
BLAKE2b-256 deedbed46cbbe9b92e01083de4bae9eca61ffa8436a1d77d217806834a1a6ca3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page