¿Hay alguna manera de hacerlo? Si logging.config.fileConfig('some.log')
es el colocador, ¿cuál es el captador? Solo curiosidad si esto existe.¿Cómo obtener el archivo en el que el módulo de registro de Python está actualmente iniciando sesión?
Respuesta
logging.config.fileConfig('some.log')
va a tratar de leer configuración de registro de some.log.
No creo que haya una forma general de recuperar el archivo de destino; no siempre está garantizado que vaya a un archivo. (Puede ir a syslog, por la red, etc.)
que tenía que hacer algo similar en un entorno de registro muy simple, la siguiente rutina hizo el truco
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
que estaba buscando el archivo utilizado por el TimedRotatingFileHandler, es posible que necesite cambiar el tipo de controlador que busca, probablemente FileHandler.
No estoy seguro de cómo sería en cualquier tipo de entorno de registro complejo.
En mi caso, solía inicializar un único registrador (en mi script principal) y usarlo en todos mis paquetes haciendo locallogger = logging.getLogger(__name__)
. En esta configuración para obtener la ruta del archivo de registro que tenía que modificar @ respuesta de Juan de la siguiente manera
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
Para mi uso básico de un único archivo de registro, esto funcionó
logging.getLoggerClass().root.handlers[0].baseFilename
A continuación lógica simple de una sola fila controlador:
>>> import logging
>>> logger = logging.getLogger("test")
>>> handler = logging.FileHandler("testlog.log")
>>> logger.addHandler(handler)
>>> print logger.handlers[0].baseFilename
/home/nav/testlog.log
>>>
- 1. ¿Estás iniciando sesión en Python?
- 2. jQuery iniciando sesión en IE: ¿cómo obtener el objeto?
- 3. Cómo evitar el truncamiento del archivo de registro con el módulo de registro de Python?
- 4. Registro de la Biblioteca Empresarial no iniciando sesión en el Registro de Eventos desde ASP.NET
- 5. iniciando sesión en scala
- 6. ¿Cómo obtener el conjunto de comprobaciones de advertencia actualmente habilitadas en el módulo perl?
- 7. ¿Cómo se puede usar el módulo de registro en python con el módulo unittest?
- 8. Averigüe el usuario que está conectado actualmente en Django
- 9. ¿Cómo obtengo el directorio en el que se encuentra el archivo jar que se está ejecutando actualmente?
- 10. Iniciando sesión en DBCP
- 11. En Django, ¿cómo sé el usuario que está conectado actualmente?
- 12. python logging cómo crear el archivo de registro como html
- 13. Obtener el módulo de la persona que llama en Ruby
- 14. ¿Cómo obtener el nombre de la prueba que se está ejecutando actualmente en spock?
- 15. Ruby: obtener el archivo que se está ejecutando
- 16. Emacs/AUCTeX: ejecutar el comando en el archivo que no está abierto actualmente
- 17. Cómo importar el módulo python desde el archivo .so?
- 18. utilizando el módulo Python Wave obtener y escritura de audio
- 19. ¿Dónde está el archivo de registro de nodejs?
- 20. ¿Cómo hacer retorcido el uso de registro de Python?
- 21. Salida de registro duplicada al usar el módulo de registro de Python
- 22. ¿Cómo obtener el nombre de archivo del módulo __main__ en Python?
- 23. ¿Es el módulo Haskell's Network.Browser como el LWP de Perl o el mecanizado de Python?
- 24. Cómo abrir de forma fiable un archivo en el mismo directorio que el script Python
- 25. Python cruzada módulo de registro
- 26. ¿Está el archivo pickle de python multiplataforma?
- 27. ¿Obtener instancia de la actividad que se está ejecutando actualmente?
- 28. Buscar ruta al archivo que se está ejecutando actualmente
- 29. Determine el archivo que está utilizando FileHandler
- 30. Node.js console.log() no iniciando sesión