2015-07-01 14 views
5

Sono stato bloccato su questo per l'ora passata. Avevo collegato l'accesso al mio tkinter gui, ma non riuscivo a farlo funzionare. Ho quindi iniziato a rimuovere le parti fino a quando non ho ottenuto l'esempio di bare bare nei documenti Python e non funzionerà. A questo punto non ho altro da rimuovere.registrazione python non salvata nel file

Il codice è il seguente:

import logging 

LOG_FILENAME = r'logging_example.out' 


logging.basicConfig(filename=LOG_FILENAME ,level=logging.DEBUG) 
logging.debug('This message should go to the log file') 
logging.info('So should this') 
logging.warning('And this, too') 

f = open(LOG_FILENAME, 'rt') 
try: 
    body = f.read() 
finally: 
    f.close() 

print('FILE:') 
print (body) 

L'avviso viene visualizzato su stdout, ma il file non viene generato. Sto eseguendo python 3.4, x64 su Windows 7. Si tratta di una distribuzione anaconda, quindi è in esecuzione in Ipython all'interno di spyder.

Credo che questo dovrebbe funzionare

+0

Questo funziona quando si esegue python.exe dalla shell. Deve essere qualcosa con il tuo ambiente. –

risposta

6

Come osservato Jonas Byström, questo non lavorare fuori ipython. Sembra che Ipython configuri un gestore di registrazione prima che abbia la possibilità di farlo. Inoltre, basicConfig non eseguirà nulla se un gestore è già presente. Quindi, per farlo funzionare in Ipython, si deve fare una delle tre cose: 1) Aggiungere un nuovo gestore, OPPURE 2) ricaricare la registrazione, OPPURE 3) rimuovere i gestori esistenti. Ho fatto il numero 2 sotto.

import logging 
from imp import reload 
reload(logging) 
LOG_FILENAME = r'logging_example.out' 


logging.basicConfig(filename=LOG_FILENAME ,level=logging.DEBUG) 
logging.debug('This message should go to the log file') 
logging.info('So should this') 
logging.warning('And this, too') 

f = open(LOG_FILENAME, 'rt') 
try: 
    body = f.read() 
finally: 
    f.close() 

print('FILE:') 
print (body) 

Vedi theese per ulteriori informazioni: Logging in ipython; More on the same

+0

Preferisco anche l'opzione 2, in quanto è semplice e mi consente di avere un maggiore controllo su tutti i comportamenti di logging. +1 – DaveL17

Problemi correlati