Рассмотрим этот простой пример:
import logging
from prompter import prompt
if __name__ == "__main__":
logger = logging.getLogger(__name__)
handler = logging.StreamHandler()
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("when do you think I am going to be printed?")
input_ = prompt("Type in your input: ")
print input_
Если я запускаю сценарий из команды, вывод выглядит корректно:
python logger_vs_prompter.py
when do you think I am going to be printed?
Type in your input: A
A
Теперь, если я запускаю его через PyCharm IDE,независимо от того, "run" или "debug", вывод становится непредсказуемым:
Connected to pydev debugger (build 192.6817.19)
Type in your input: when do you think I am going to be printed?
A
A
Connected to pydev debugger (build 192.6817.19)
when do you think I am going to be printed?
Type in your input: A
A
C:\devel\Python-2.7\python.exe logger_vs_prompter.py
Type in your input: when do you think I am going to be printed?
D
D
Я даже пытался принудительно сбросить логгер, добавив
logger.handlers[0].flush()
Но не помогло.
Я склонен подозревать, что это проблема IDE и что мне не стоит беспокоиться о неуклюжих выходных данных в моем реальном случае использования, но, тем не менее, есть ли способ обеспечить порядок вывода?