Skip to main content
Esta documentação descreve como configurar o logging com a integração AppSignal for Python.
O logging só está disponível ao usar o modo collector, que é um recurso experimental.

Configurar logging

🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) dos logs e use um ID, hash ou identificador pseudonimizado no lugar.

Para entidades cobertas pela HIPAA, mais informações sobre como assinar um Business Associate Agreement (BAA) podem ser encontradas em nossa documentação de Business Add-Ons.
Você não precisa criar uma fonte de log para enviar logs da integração AppSignal for Python. Uma fonte de log “application” será criada automaticamente. Ao usar o modo collector, o AppSignal instrumenta automaticamente o módulo logging embutido do Python via OpenTelemetry, anexando um handler ao logger raiz.

Quais logs são capturados

O AppSignal captura logs enviados ao logger raiz e a qualquer logger que propague para ele. A propagação é controlada pelo atributo propagate em cada logger, que tem como padrão True no Python. Loggers com propagate=False não terão suas mensagens capturadas pelo AppSignal. Algumas bibliotecas e frameworks definem esse atributo em seus próprios loggers. O Django, por exemplo, o define no django.server; a seção Django mostra como sobrescrever isso.

Definir o nível de log

O módulo logging do Python usa por padrão o nível de log WARNING, o que significa que mensagens de log INFO e DEBUG não serão capturadas. Para capturar mensagens de severidade mais baixa, defina o nível do logger raiz:

Enviar apenas loggers específicos para o AppSignal

Por padrão, o AppSignal captura tudo o que chega ao logger raiz. Para enviar um conjunto escolhido de loggers, desabilite a instrumentação automática com a opção de configuração disable_default_instrumentations e anexe o handler você mesmo:
Passe log_code_attributes=True para registrar o arquivo, a função e a linha de onde cada linha de log veio, assim como faz a instrumentação automática. Um handler que você anexa por conta própria não fica protegido contra uma reconfiguração posterior da forma como a instrumentação automática fica. No Django, adicioná-lo diretamente à configuração de logging é a forma mais confiável de anexá-lo.
Desabilitar a instrumentação automática é o que impede o AppSignal de anexar seu próprio handler. Anexar seu próprio handler sem desabilitá-la faz com que cada linha de log que chega aos dois handlers seja enviada duas vezes.

Configuração de framework

Celery

O Celery faz fork dos processos worker, então o AppSignal precisa ser iniciado para cada fork. Use o sinal worker_process_init para reinicializar o AppSignal e configurar o logging em cada processo worker. Veja a página de instrumentação do Celery para mais detalhes sobre como instrumentar tarefas do Celery.

Django

O Django define propagate=False em seu logger django.server, de modo que suas mensagens não chegam ao logger raiz onde o handler do AppSignal está anexado. Sobrescreva isso em sua configuração LOGGING:
Para enviar apenas loggers específicos para o AppSignal, adicione o handler à sua configuração LOGGING em vez de anexá-lo no código, para que ele sobreviva à configuração do módulo de logging pelo Django:
Para versões anteriores do AppSignal for Python, recomendávamos adicionar o LoggingHandler do OpenTelemetry à sua configuração LOGGING. Ao atualizar para o AppSignal for Python 1.9.0, você deve remover o LoggingHandler do OpenTelemetry da sua configuração, já que o AppSignal anexará seu próprio handler, fazendo com que o seu handler emita linhas duplicadas.

Enviando logs com OpenTelemetry

Você também pode enviar logs diretamente usando a API de logs do OpenTelemetry, sem passar pelo módulo logging do Python:
Passar um dicionário como body envia uma linha de log estruturada. Suas chaves se tornam atributos da linha de log no AppSignal, e uma chave message se torna a mensagem da linha de log:

Filtrando logs

Você pode usar a opção de configuração ignore_logs para ignorar linhas de log. Veja nosso guia Ignore Logs para saber mais.

Precisa de ajuda?

Depois de configurar sua aplicação Python para enviar logs, os logs devem aparecer no AppSignal. Se você tiver dúvidas sobre este passo ou o AppSignal não estiver recebendo logs, você sempre pode entrar em contato para obter ajuda. Vamos te ajudar a voltar ao normal!