Como posso enviar mensagens de rastreamento para o console (como print
) quando estou executando meu aplicativo Django em manage.py runserver
, mas essas mensagens são enviadas para um arquivo de log quando estou executando o aplicativo em Apache?
Eu revisei o log do Django e embora tenha ficado impressionado com sua flexibilidade e configurabilidade para usos avançados, ainda estou perplexo em como lidar com meu caso de uso simples.
Respostas:
O texto impresso em stderr aparecerá no log de erros do httpd quando executado em mod_wsgi. Você pode usar
print
diretamente ou emlogging
vez disso.fonte
print("Goodbye cruel world!", file=sys.stderr)
Aqui está uma solução baseada em log do Django. Ele usa a configuração DEBUG em vez de realmente verificar se você está ou não executando o servidor de desenvolvimento, mas se você encontrar uma maneira melhor de verificar isso, será fácil de se adaptar.
consulte https://docs.djangoproject.com/en/dev/topics/logging/ para obter detalhes.
fonte
LOGGING['loggers'][logger]['handlers'] += ['console']
settings.py
parte inferior e a definoDEBUG = True
(procure essa configuração perto da parte superior no mesmo arquivo). Então, eu corropython manage.py runserver
de um terminal (veja a documentação do django para detalhes), e as mensagens de log aparecerão na janela do terminal. Na produção, eu usaria um settings.py diferente, para ondeDEBUG = False
- as mensagens de log vão/path/to/your/file.log
.Você pode configurar o registro em seu
settings.py
arquivo.Um exemplo:
No entanto, isso depende da configuração de DEBUG e talvez você não queira se preocupar com a configuração. Veja esta resposta em Como posso saber se meu aplicativo Django está sendo executado no servidor de desenvolvimento ou não? para uma maneira melhor de escrever essa condicional. Editar: o exemplo acima é de um projeto Django 1.1, a configuração de registro no Django mudou um pouco desde essa versão.
fonte
Eu uso isso:
logging.conf:
testapp.py:
fonte
Você pode fazer isso facilmente com
tagalog
(https://github.com/dorkitude/tagalog)Por exemplo, enquanto o módulo Python padrão grava em um objeto de arquivo aberto no modo anexar, o módulo do App Engine (https://github.com/dorkitude/tagalog/blob/master/tagalog_appengine.py) substitui esse comportamento e usa
logging.INFO
.Para obter esse comportamento em um projeto do App Engine, pode-se simplesmente fazer:
Você mesmo pode estender o módulo e sobrescrever a função de log sem muita dificuldade.
fonte
Isso funciona muito bem no meu local.py, evitando que eu atrapalhe o registro regular:
fonte