В Python 2.4 и более поздних версиях настройка модуля ведения журнала для более простого форматирования проста:
logging.basicConfig (level = opts.LOGLEVEL, format = "% (message) s")
, но для приложений, которые должны поддерживать Python 2.3, это кажется более сложным, потому что API журналирования был переработан в Py2.4. В частности, basicConfig не принимает никаких аргументов. Пробуя вариант на единственном примере в документации Py2.3, я получаю это:
try:
logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
logging.getLogger().setLevel(opts.LOGLEVEL)
h = logging.StreamHandler()
h.setFormatter(logging.Formatter("%(message)s"))
logging.getLogger().addHandler(h)
но вызывает этот корневой логгер в Py2.3, например
logging.info("Foo")
дает дублированный вывод:
Foo
INFO:root:Foo
Я не могу найти способ изменить формат существующего обработчика на корневом логгере в Py2.3 (блок «кроме» выше), следовательно, вызов «addHandler», который производит дублированный вывод. Есть ли способ установить формат корневого регистратора без этого дублирования? Спасибо!