Я пытаюсь играть с модулем python logging
, но здесь немного запутался. Ниже приведен стандартный сценарий для создания logger
, а затем создайте и добавьте file handler
и console handler
в logger
.Модуль протоколирования Python: дублированный вывод консоли [IPython Notebook/Qtconsole]
import logging
logger = logging.getLogger('logging_test')
logger.setLevel(logging.DEBUG)
print(len(logger.handlers)) # output: 0
# create file handler which logs even debug messages
fh = logging.FileHandler('/home/Jian/Downloads/spam.log', mode='w')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(ch)
logger.addHandler(fh)
print(len(logger.handlers)) # output: 2
# write some log messages
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
Я запускаю это на вновь запущенном ядре. file handler
работает должным образом. Но на выходе консоли, у меня есть какое-то дублированные сообщения:
2015-07-14 10:59:26,942 - logging_test - DEBUG - debug message
DEBUG:logging_test:debug message
2015-07-14 10:59:26,944 - logging_test - INFO - info message
INFO:logging_test:info message
2015-07-14 10:59:26,944 - logging_test - WARNING - warn message
WARNING:logging_test:warn message
2015-07-14 10:59:26,945 - logging_test - ERROR - error message
ERROR:logging_test:error message
2015-07-14 10:59:26,946 - logging_test - CRITICAL - critical message
CRITICAL:logging_test:critical message
Я полагаю, эти сообщения журнала с метками времени являются от определенного пользователя console handler
, но где дублированные сообщения приходят? Могу ли я избавиться от них, скажем, сохранить только каждую другую линию? Любая помощь приветствуется.
В какой среде вы работаете? PyCharm, Eclipse, WingIDE, IDLE? –
@PeterWood просто простой IPython ноутбук. как на py2.7, так и на py3.4. OS Ubuntu. –
Ноутбук вызывает проблему, код работает отлично в pycharm и сам ipython –