2015-07-22 12 views
6

Ho appena installato il primo sito Web che ho creato con Flask su un server di produzione. Ho attivato la registrazione utilizzando il logging.handlers.RotatingFileHandler-/log/myapp.log, con cui posso registrare i messaggi utilizzando ad esempio:Dove vanno le stampe quando si esegue Flask con Apache?

current_app.logger.error('this is a massive error') 

Questo funziona bene. Mi fa però pensare ad alcuni pezzi di codice, che contengono ad esempio print 'some info here' che ho usato durante il debug. Dove vanno queste stampe? Nel vuoto /dev/null o da qualche altra parte? C'è una possibilità di prenderli in qualche modo?

Tutti i suggerimenti sono benvenuti!

+0

il server terminal .... hai controllato lì? – Ja8zyjits

+0

@ Ja8zyjits - Ma avvio apache usando 'sudo service apache2 start', quindi dove trovo il server terminal? – kramer65

+0

Stai usando mod_wsgi? O uwsgi? Apache da solo non fa wsgi, che è necessario per le applicazioni web Python come la fiaschetta. –

risposta

4

Tutto ciò che viene emesso utilizzando print passa all'output standard, ad esempio /dev/stdout su un server Unix (per impostazione predefinita). Poiché apache è in esecuzione come servizio, probabilmente non vedrai mai questi output.

Un modo per affrontare questo è per reindirizzare lo standard output dei vostri script per alcuni file: dichiarazioni

>>> import sys 
>>> sys.stdout = open('output.logs', 'w') 
>>> print('Hello World!') # Nothing appears bellow 
>>> sys.stdout = sys.__stdout__ # Reset to the standard output 
>>> open('output.logs', 'r').read() 
'Hello World!\n' 
+0

Ma l'output è visibile solo quando l'app termina o ripristina il flusso di output –

2

stampa in applicazione in esecuzione su Apache può essere di solito visto nei log di Apache. Puoi controllare questo file: /var/log/apache2/other_vhosts_access.log

+0

Quel file è vuoto .. :( – kramer65

+1

cosa dire '/var/log/apache2/access.log?' – TheGeorgeous

+0

Che registra le richieste, ma nog il print statements – kramer65