Я еще не понял, почему ваше решение не работает - я добавлю к этому позже.
Чтобы отделить конфигурацию ведения журнала от остальной части вашего кода, поместите ее в отдельный модуль и импортируйте этот модуль в модуль верхнего уровня . Все нисходящие потоки будут наследовать через распространение, если специально не настроено.
Похоже, вам нужна одна и та же базовая c конфигурация для всех журналов, поэтому вам нужно только определить конфигурацию root регистратор. В следующем примере имя регистратора root - ''
.
log_config.py
import logging, logging.config
config = {'version':1,
'handlers':{'fyle':{'class' : 'logging.FileHandler',
'level' : 'DEBUG',
'formatter' : 'primary',
'filename' : 'out.log'
},
'console':{'class' : 'logging.StreamHandler',
'level' : 'INFO',
'formatter' : 'primary',
}
},
'formatters':
{'primary':{
'format':'%(asctime)s - %(threadName)s - %(name)s -- %(levelname)s - %(message)s'}
},
'loggers': {
'': {'handlers':['console', 'fyle'],
'level':'DEBUG',
}
}
}
logging.config.dictConfig(config)
Logging HOWTO Advanced: Configuring Logging
main.py
import logging
import log_config
import foo
logger = logging.getLogger('main')
time.sleep(3)
logger.warning('This is tmp')
foo.py
import logging
import time
import bar # other_modules
module_logger = logging.getLogger("main.functions")
module_logger.propagate = True
time.sleep(1)
module_logger.warning('This is foo!')
module_logger.debug('This is foo! debug')
bar.py (от те другие люди )
import logging
import time
time.sleep(2)
logging.warning('This is bar!!')
logging.debug('this is bar DEBUG')