/ / logging request info to file, em funções internas (Django) - django, logging

logging request info to file, em funções internas (Django) - django, logging

Eu estou usando o logger simples para salvar informações de depuração paraArquivo. Meu problema é que eu quero que cada linha no log seja prefixada com informações de solicitação (por exemplo, usuário, url), e as funções internas ativadas pela visualização não têm acesso ao parâmetro de solicitação.

Eu pensei sobre

  1. Passando o pedido para cada função - muito ruim
  2. subindo a pilha de traceback, procurando por "pedido" em variáveis ​​locais - não tenho certeza de como fazer isso ou se será muito lento (digamos, registrando até ~ 100 vezes por solicitação)
  3. cercando a função de visão com um "com"instrução que manterá todas as informações de solicitação em uma variável global (key = thread id) - não recomendada como risco de segurança (http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser) e requer o recuo do código inteiro na exibição

Existe uma solução elegante?

Respostas:

1 para resposta № 1

Acredito que você queira usar um filtro que adicione atributos de solicitação às suas mensagens de log. Este pacote parece resolver isso: http://pypi.python.org/pypi/django-requestlogging


0 para resposta № 2

Isso pode não ser exatamente o que você está procurando, mas django-sentry fornece a funcionalidade que você descreve (com uma interface web agradável também). Pode ser mais fácil do que tentar implementar sua própria solução.