Задать вопрос
Izy
@Izy
Учу

Почему logging выводит сразу и в файл и в консоль (настроил через dictconfig)?

Почему логи выводятся и в файл и в конслоль, и можно ли это как то убрать, хочу чтобы когда надо выводилось в консоль и в файл, а когда не надо то выводилось только в файл.
вобщем есть вот такой конфиг:
version: 1
disable_existing_loggers: false

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: log/info.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

    error_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: ERROR
        formatter: error
        filename: log/errors.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

    debug_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: DEBUG
        formatter: standard
        filename: log/debug.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

    critical_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: CRITICAL
        formatter: standard
        filename: log/critical.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8

    warn_file_handler:
        class: logging.handlers.RotatingFileHandler
        level: WARN
        formatter: standard
        filename: log/warn.log
        maxBytes: 10485760 # 10MB
        backupCount: 20
        encoding: utf8
    rroot:
        class: logging.StreamHandler
        level: NOTSET
        formatter: standard
        stream: ext://sys.stdout



root:
    level: NOTSET
    handlers: [rroot]
    propogate: yes

loggers:
    DDEBUG:
        level: DEBUG
        handlers: [ info_file_handler, error_file_handler, critical_file_handler, debug_file_handler, warn_file_handler]
        propogate: no

    IINFO:
        level: INFO
        handlers: [info_file_handler, error_file_handler, critical_file_handler, debug_file_handler, warn_file_handler]
        propogate: yes


а вот функция которая это все вызывает:
def setup_logging(path='logging.yaml', default_level=logging.INFO):
    if os.path.exists(path):
        with open(path, 'rt') as f:
            try:
                config = yaml.safe_load(f.read())

                logging.config.dictConfig(config)
                coloredlogs.install(level='DEBUG')
            except Exception as e:
                print(e)
                logging.basicConfig(level=default_level)
                coloredlogs.install(level=default_level)
    else:
        logging.basicConfig(level=default_level)
        coloredlogs.install(level=default_level)

 alog = logging.getLogger('DDEBUG')
    alog.debug('debug message!')
    alog.info('info message!')
    alog.error('error message')
    alog.critical('critical message')
    alog.warning('warning message')
  • Вопрос задан
  • 351 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
Izy
@Izy Автор вопроса
Учу
решение в коментариях выше
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Первое, что заметил - слово propogate написано неправильно. Надо propаgate.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы