Configurar logging
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ódulologging 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 atributopropagate 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ódulologging 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çãodisable_default_instrumentations e anexe o handler você mesmo:
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.
Configuração de framework
Celery
O Celery faz fork dos processos worker, então o AppSignal precisa ser iniciado para cada fork. Use o sinalworker_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 definepropagate=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:
LOGGING em vez de anexá-lo no código, para que ele sobreviva à configuração do módulo de logging pelo Django:
Enviando logs com OpenTelemetry
Você também pode enviar logs diretamente usando a API de logs do OpenTelemetry, sem passar pelo módulologging do Python:
message se torna a mensagem da linha de log:
Filtrando logs
Você pode usar a opção de configuraçãoignore_logs para ignorar linhas de log. Veja nosso guia Ignore Logs para saber mais.