Запись Python в другое место назначения с использованием файла конфигурации - PullRequest
1 голос
/ 19 декабря 2011

Я хочу использовать файл конфигурации для создания двух регистраторов, которые будут регистрироваться в двух разных файлах. Мой файл конфигурации выглядит так:

[loggers]
keys=root,main,zipper

[handlers]
keys=main,zip

[formatters]
keys=fmt

[logger_root]
level=DEBUG
handlers=main

[logger_main]
level=DEBUG
handlers=main
qualname=MAIN

[logger_zipper]
level=DEBUG
qualname=UPLOAD
handlers=zip

[handler_zip]
class=FileHandler
level=DEBUG
formatter=fmt
args=('zipper.log','a+')

[handler_main]
class=FileHandler
level=DEBUG
formatter=fmt
args=('main.log','a+')

[formatter_fmt]
format=%(asctime)s - %(levelname)s - %(name)s - %(message)s

Я пытаюсь использовать этот файл конфигурации следующим образом:

import logging
import logging.config

logging.config.fileConfig("logging.conf")

# Logs to the first file
log = logging.getLogger("")
log.debug("unspec - debug")
log.error("unspec - error")

# Logs to the first file
log_r = logging.getLogger("main")
log_r.debug("main - debug")
log_r.error("main - error")

# Also logs to the first file :(
log_z = logging.getLogger("zipper")
log_z.debug("zipper - debug")
log_z.error("zipper - error")

По какой-то причине я не понимаю, все сообщения журнала идут в первый файл, когда я ожидаю, что последние два будут записаны в 'zipper.log'. Что мне не хватает?

1 Ответ

2 голосов
/ 19 декабря 2011

Проблема в том, что в файле конфигурации используется полное имя:

[logger_zipper]
level=DEBUG
qualname=UPLOAD
handlers=zip

не соответствует используемому в коде:

log_z = logging.getLogger("zipper")

Используйте любую из этих комбинаций:

  • qualname=zipper и logging.getLogger("zipper")
  • qualname=UPLOAD и logging.getLogger("UPLOAD")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...