У меня есть набор тестов, которые я запускаю с помощью Nose и Python 2.7.Переключиться с .bat на .py - дублировать ведение журнала
Я использовал для запуска пакета с файлом runner.bat
.
Используя это, я хотел бы получить хороший выход в журнал, например, так:
2015-02-10 16:28:28,759 - DEBUG - Firefox version: 35.0
2015-02-10 16:28:28,788 - DEBUG - Running against Production on firefox
etc.
Я хочу порт мой .bat в .py по целому ряду причин (в основном добавляют функциональность)
У меня есть сделал файл runner.py
. Он находится в том же каталоге, что и runner.bat
. Но теперь мой журнал дублируется.
2015-02-10 17:04:57,315 - DEBUG - Firefox version: 35.0
2015-02-10 17:04:57,315 - DEBUG - Firefox version: 35.0
2015-02-10 17:04:57,355 - DEBUG - Running against Production on firefox
2015-02-10 17:04:57,355 - DEBUG - Running against Production on firefox
Я попытался добавить logger.propogate=False
к моему объекту регистрации, но не повезло. У кого-нибудь есть идеи относительно того, почему я вдруг получаю дубликаты при работе с .py?
LogManager.py
def configure_logging():
# Log to file
fileHandler = FileHandler(logging_path)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
logger.setLevel(logging.DEBUG)
logger.propagate = False
configure_logging()
Runner.bat
@echo off
IF EXIST C:\TestOutput\version.txt del C:\TestOutput\version.txt
python C:\TestSuite\Utils\cleanup_logging_output_dir.py
nosetests -a level=gold
Runner.py
import os
import sys
import socket
import nose
import tempfile
import shutil
def prepare_tests():
... do lots of stuff ...
os.system("python {} {}".format(clean_log_script, config_dir)
nose_argv = [__file__, '-a', 'level=gold', '--with-id']
... augment nose_argv if needed based on other variables...
return nose_argv
######################
### Run nosetests ###
######################
test_argv = prepare_tests()
result = None
if __name__ == '__main__':
# don't run tests on current file
test_argv.extend(['--ignore-files', os.path.basename(__file__)])
result = nose.run(argv=test_argv)
Опрятного инструмент, logging_tree. Я вижу, что 'Propogate OFF' установлен для правильного регистратора, но есть дубликаты файлов обработчиков, следовательно, дублирование. Я запускаю 'printout()' сразу после того, как я 'configure_logging()'. Не знаю, почему дубликаты будут там так немедленно. – dbJones