2013-01-18 17 views
13

Qual è la metodologia per sapere dove sono archiviate le istruzioni del registro Python?Registrazione Python: controllare la posizione dei file di registro?

vale a dire se faccio:

import logging 
log = logging.getLogger(__name__) 
log.info('Test') 

Dove potrei trovare il file di log? Inoltre, quando chiamo:

logging.getLogger(__name__) 

È che in qualche modo legato al modo in cui il registratore si comporterà/SAVE?

risposta

12

Il modulo logging utilizza i gestori collegati ai registratori per decidere come, dove, o anche se i messaggi vengono memorizzati o visualizzati. È possibile configurare logging per impostazione predefinita per scrivere in un file. Dovresti davvero leggere lo docs, ma se chiami logging.basicConfig(filename=log_file_name) dove log_file_name è il nome del file in cui vuoi scrivere messaggi (nota che devi farlo prima che venga chiamato tutto il resto in logging), quindi tutti i messaggi registrati a tutti i logger (a meno che qualche altra riconfigurazione avvenga più tardi) saranno scritti lì. Essere consapevoli del livello in cui è impostato il logger; se la memoria serve, info è al di sotto del livello di registro predefinito, quindi dovresti includere level=logging.INFO negli argomenti a basicConfig e il tuo messaggio finirà nel file.

Per quanto riguarda l'altra parte della tua domanda, logging.getLogger(some_string) restituisce un oggetto Logger, inserito in nella posizione corretta nella gerarchia del logger principale, con il nome di essere il valore di some_string. Chiamato senza argomenti, restituisce il logger root. __name__ restituisce il nome del modulo corrente, quindirestituisce un oggetto Logger con il nome impostato sul nome del modulo corrente. Questo è un modello comune utilizzato con logging, in quanto fa sì che la struttura del logger rispecchi la struttura del modulo del codice, il che rende molto più utili i messaggi di registrazione durante il debug.

0

per trovare la posizione del file di log, provare un'istanza l'oggetto log in un guscio di Python nel proprio ambiente e guardando il valore di:

log.handlers[0].stream

3

Per ottenere la posizione di log di un semplice registratore di file, provare

logging.getLoggerClass().root.handlers[0].baseFilename 
Problemi correlati