Tengo un pequeño proyecto de Python que tiene la siguiente estructura:
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
Planeo usar el módulo de registro predeterminado para imprimir mensajes en stdout y un archivo de registro. Para usar el módulo de registro, se requiere algo de inicialización:
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
Actualmente, realizo esta inicialización en cada módulo antes de comenzar a registrar mensajes. ¿Es posible realizar esta inicialización solo una vez en un lugar, de modo que la misma configuración se reutilice al iniciar sesión en todo el proyecto?
package/__init__.py
. Ese no es normalmente el lugar donde pones el if __name__ == '__main__'
código. Además, el ejemplo de prost parece que llamará al código de configuración incondicionalmente en la importación, lo que no me parece correcto. En general, el código de configuración de registro debe hacerse en un lugar y no debe ocurrir como un efecto secundario de la importación, excepto cuando está importando __main__.
if __name__ == '__main__'
? (no se menciona explícitamente en cuestión si este es el caso)
fileConfig
a todos los módulos que registran, a menos que tengaif __name__ == '__main__'
lógica en todos ellos. La respuesta de prost no es una buena práctica si el paquete es una biblioteca, aunque podría funcionar para usted: no debe configurar el inicio de sesión en los paquetes de la biblioteca, aparte de agregar aNullHandler
.