Предположим, у меня есть такая конфигурация ведения журнала (любезно предоставлена https://gist.github.com/kingspp/9451566a5555fb022215ca2b7b802f19):
version: 1
disable_existing_loggers: true
formatters:
standard:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
error:
format: "%(levelname)s <PID %(process)d:%(processName)s> %(name)s.%(funcName)s(): %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: standard
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: standard
filename: logs/info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: error
filename: logs/errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
debug_file_handler:
class: logging.handlers.RotatingFileHandler
level: DEBUG
formatter: standard
filename: logs/debug.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
critical_file_handler:
class: logging.handlers.RotatingFileHandler
level: CRITICAL
formatter: standard
filename: logs/critical.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
warn_file_handler:
class: logging.handlers.RotatingFileHandler
level: WARN
formatter: standard
filename: logs/warn.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
src.b:
level: INFO
handlers: [console]
propogate: no
root:
level: DEBUG
handlers: [info_file_handler, error_file_handler, critical_file_handler, debug_file_handler, warn_file_handler]
propogate: no
И у меня следующая файловая структура:
|config
|-logging_config.yaml
|src
|-b.py
|a.py
|logs
Файлы следующие. a.py:
import logging
import logging.config
import yaml
with open('config/logging_config.yaml', 'r') as f:
config = yaml.safe_load(f.read())
logging.config.dictConfig(config)
import src.b
if __name__ == "__main__":
# Sample logs from main
logging.debug("A Debug log")
logging.info("A Info log")
logging.warning("A Warning log")
logging.error("A Error log")
logging.critical("A Critical log ")
b.py
import logging
logger = logging.getLogger(__name__)
print(__name__)
print(logger)
logging.debug("B Debug log")
logging.info("B Info log")
logging.warning("B Warning log")
logging.error("B Error log")
logging.critical("B Critical log ")
После запуска
python a.py
Я ожидаю, что в файлах будут журналы из a.py (поскольку используется регистратор root) и ведение журнала из b.py в консоли, поскольку используется регистратор sr c .b и для параметра распространения задано значение no. Однако все находится в файлах журнала и ничего не поступает на консоль. Когда я реверсирую это, я получаю все в консоли и ничего в файлах журнала. Не могли бы вы помочь мне перенести журналы из b в консоль (только) и журналы из a только в файлы?