модуль регистрации добавляет ведущие пробелы в выводе консоли - PullRequest
1 голос
/ 11 октября 2011

РЕДАКТИРОВАТЬ Пробелы были добавлены неясным утверждением в коде, где-то глубоко в подфункции. После того, как это было удалено, вывод логирования хорош ... Поэтому я закрываю тему.

Перенаправление записи консоли на stderr позволяет легко выделить это, так что благодаря комментаторам!


Я использую модуль Python logging для ведения журналов из моего проекта, как для файла журнала, так и для стандартного вывода. Это работает довольно хорошо, на основе конфигурационного файла, с различными уровнями ведения журнала.

Проблема: при стандартном выводе строки начинаются с пробелов. Похоже, это связано со временем, прошедшим между двумя записями (что-то вроде одного пробела в секунду).

Конечно, я сделал ошибку в журнале конфигурационного файла, так как на самом деле мне не легко с ним, но я не могу определить, где. Изменение уровня регистрации для всех, которые будут установлены в то же самое время, ничего не изменит. Может ли кто-нибудь принести помощь?


Содержание файла отчета:

2011-10-11 17:25:43,911 : INFO : P-Tool : P-Tool launched from command-line
2011-10-11 17:25:43,927 : INFO : P-Tool : Starting instantiation of tools
2011-10-11 17:25:43,959 : INFO : P-Tool : Initialization completed
2011-10-11 17:25:43,959 : INFO : P-Tool : Execution started
2011-10-11 17:25:44,973 : WARNING : P-Tool : Process Project File CRC check FAILED, [...]
2011-10-11 17:25:44,973 : INFO : P-Tool : XSD version check passed: Process [...]
2011-10-11 17:25:44,973 : ERROR : P-Tool : XSD validation FAILED for Process[...]
2011-10-11 17:25:44,973 : INFO : P-Tool : Process Call found, ID: 1, short name: [...]
2011-10-11 17:25:44,973 : INFO : lib.tools.I-Tool : importing AC_ICD: [...]
2011-10-11 17:25:52,983 : INFO : lib.tools.I-Tool : importing AC_ICD: [...]
2011-10-11 17:26:00,009 : INFO : lib.tools.V-Tool : verifying project [...] 

Стандартный вывод:

INFO : P-Tool : P-Tool launched from command-line
INFO : P-Tool : Starting instantiation of tools
INFO : P-Tool : Initialization completed
INFO : P-Tool : Execution started
 WARNING : P-Tool : Process Project File CRC check FAILED, [...]
INFO : P-Tool : XSD version check passed: Process Project [...]
ERROR : P-Tool : XSD validation FAILED for Process Project [...]
INFO : P-Tool : Process Call found, ID: 1, short [...]
INFO : lib.tools.I-Tool : importing AC_ICD: [...]
  INFO : lib.tools.I-Tool : importing AC_ICD: [...]
  INFO : lib.tools.V-Tool : verifying project [...]
 ERROR : P-Tool : no CRC found in "Project\Rep[...]
INFO : lib.tools.G-Tool : generating binary for [...]
 ERROR : P-Tool : no CRC found in "Project\Reports[...]
INFO : lib.tools.LAF Writer : LAF writing started, [...]

(обратите внимание, как строки начинаются с пробела)

Вот как я настраиваю модуль logging:

# in the module p_tool.py
# defining the logging
LOG_CONFIG = 'logging.conf'
logging.config.fileConfig(os.path.join(os.path.split(__file__)[0], 
                                       'resources', 
                                       LOG_CONFIG))
logger = logging.getLogger('P-Tool')

[...]
# adding some message
logger.info('message to logger')

и файл конфигурации ведения журнала:

# logging.conf
[loggers]
keys=root,P-Tool

[handlers]
keys=consoleHandler,logFileHandler

[formatters]
keys=consoleFormatter,fileFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler,logFileHandler

[logger_P-Tool]
level=DEBUG
handlers=consoleHandler,logFileHandler
qualname=P-Tool
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormatter
args=(sys.stdout,)

[handler_logFileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('p_tool_log.txt','w')

[formatter_fileFormatter]
format=%(asctime)s : %(levelname)s : %(name)s : %(message)s
datefmt=

[formatter_consoleFormatter]
format=%(levelname)s : %(name)s : %(message)s
datefmt=

1 Ответ

1 голос
/ 17 октября 2011

Как написано выше, я допустил две ошибки в своем коде.Следовательно, нет ничего плохого в модуле logging или в конфигурации, которую я из него сделал.

Пробелы были добавлены неясным оператором в коде, где-то глубоко в подфункции.После того, как это было удалено, вывод журналирования хорош ... Поэтому я закрываю тему.

Перенаправление журналирования консоли на stderr позволило легко выделить это, так что благодаря комментаторам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...