C'è un modo per farlo? Se logging.config.fileConfig('some.log')
è il setter, qual è il getter? Solo curioso se questo esiste.Come ottenere il file al quale si sta collegando il modulo di registrazione Python?
risposta
logging.config.fileConfig('some.log')
sta per provare a leggere configurazione di registrazione da some.log.
Non credo che ci sia un modo generale per recuperare il file di destinazione - non è sempre garantito persino di andare in un file. (Può andare a syslog, attraverso la rete, etc.)
avevo bisogno di fare qualcosa di simile in un ambiente molto semplice registrazione, la seguente routine di fatto il trucco
def _find_logger_basefilename(self, logger):
"""Finds the logger base filename(s) currently there is only one
"""
log_file = None
parent = logger.__dict__['parent']
if parent.__class__.__name__ == 'RootLogger':
# this is where the file name lives
for h in logger.__dict__['handlers']:
if h.__class__.__name__ == 'TimedRotatingFileHandler':
log_file = h.baseFilename
else:
log_file = self._find_logger_basefilename(parent)
return log_file
che cercavo per il file usato da TimedRotatingFileHandler potrebbe essere necessario modificare il tipo di gestore che si cerca, probabilmente FileHandler.
Non so come andrebbe in qualsiasi tipo di ambiente di registrazione complesso.
Nel mio caso, ho usato per inizializzare un singolo logger (nel mio script principale) e lo uso in tutti i miei pacchetti facendo locallogger = logging.getLogger(__name__)
. In questa configurazione per ottenere il percorso del file di registrazione ho dovuto modificare @ risposta di Giovanni come segue
def find_rootlogger_basefilename():
"""Finds the root logger base filename
"""
log_file = None
rootlogger = logging.getLogger('')
for h in rootlogger.__dict__['handlers']:
if h.__class__.__name__ == 'FileHandler':
log_file = h.baseFilename
break
elif h.__class__.__name__ == 'TimedRotatingFileHandler':
log_file = h.baseFilename
break
return log_file
Per il mio uso di base di un singolo file di log, questo ha funzionato
logging.getLoggerClass().root.handlers[0].baseFilename
Sotto semplice logica per singolo file gestore:
>>> import logging
>>> logger = logging.getLogger("test")
>>> handler = logging.FileHandler("testlog.log")
>>> logger.addHandler(handler)
>>> print logger.handlers[0].baseFilename
/home/nav/testlog.log
>>>
- 1. Il modulo di registrazione Python non sta scrivendo nulla sul file
- 2. Come si può usare il modulo di registrazione in python con il modulo unittest?
- 3. modulo di registrazione Python sta stampando linee più volte
- 4. Come impedire il troncamento del file di log con il modulo di registrazione python?
- 5. Come ottenere il nome file del modulo __main__ in Python?
- 6. Symfony2 aggiungi il campo reCaptcha al modulo di registrazione
- 7. Barra di avanzamento Python TRAMITE il modulo di registrazione
- 8. collegando un auto-registrazione, fabbrica astratto
- 9. Python cross-modulo di registrazione
- 10. Quale modulo di registrazione utilizzare in AnyEvent di Perl?
- 11. Come si riconosce il parlato con il modulo Python Dragonfly?
- 12. aggiungere il file parziale al file di modulo esistente
- 13. Come ottenere il percorso del file del modulo importato
- 14. Come faccio a capire quale modulo sta caricando Moose?
- 15. Come posso ottenere il riferimento al modulo modale attualmente attivo?
- 16. Sopprime newline nel modulo di registrazione Python
- 17. Come si corregge il Modulo già caricato UserWarnings in Python?
- 18. Modulo di registrazione Python: logger personalizzati
- 19. Come stampare la configurazione di registrazione corrente utilizzata dal modulo di registrazione Python?
- 20. Come ottenere il caricamento del file senza un modulo
- 21. La registrazione Python esegue il flush di ogni registro?
- 22. Modulo di registrazione Magento
- 23. In Visual Studio 2010 come ottenere Solution Explorer per evidenziare il file che si sta visualizzando?
- 24. Il modal bootstrap di Twitter si apre davanti al modulo
- 25. File di configurazione di registrazione Python
- 26. Il file di licenza Infragistics si aggiunge al progetto?
- 27. Come importare il modulo python dal file .so?
- 28. Come posso sopprimere newline nel modulo di registrazione Python.
- 29. Come si può ottenere la dimensione di un tipo per il quale si ha una codifica?
- 30. Il pool di multiprocessing Python si blocca al join?