Python не создает файл журнала

Я пытаюсь реализовать некоторые записи для записи сообщений. Я получаю какое-то странное поведение, поэтому я попытался найти минимальный пример, который я нашел здесь. Когда я просто копирую простой пример, описанный там в моем интерпретаторе, файл не создается, как вы можете видеть здесь:

In [1]: import logging
   ...: logging.basicConfig(filename='example.log',level=logging.DEBUG)
   ...: logging.debug('This message should go to the log file')
   ...: logging.info('So should this')
   ...: logging.warning('And this, too')
WARNING:root:And this, too

In [2]: ls example.log

File not found

Может кто-нибудь помочь мне понять, что я делаю неправильно? Спасибо...

EDIT: изменил выход после второго ввода на английский и удалил ненужные части. Важно только то, что Python не создает файл example.log.

Ответ 1

Причиной вашего неожиданного результата является то, что вы используете что-то поверх Python (похоже на IPython), который настраивает сам корневой журнал. По документации для basicConfig(),

Эта функция ничего не делает, если корневой регистратор уже имеет обработчики настроенный для него.

То, что вы получаете с помощью только Python, выглядит примерно так:

C:\temp>python
ActivePython 2.6.1.1 (ActiveState Software Inc.) based on
Python 2.6.1 (r261:67515, Dec  5 2008, 13:58:38) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> logging.basicConfig(filename='example.log', level=logging.DEBUG)
>>> logging.debug('This message should go to the log file')
>>> logging.info('And so should this')
>>> logging.warning('And this, too')
>>> ^Z

C:\temp>type example.log
DEBUG:root:This message should go to the log file
INFO:root:And so should this
WARNING:root:And this, too

Ответ 2

Укажите, какую операционную систему вы используете.

Вы используете Windows, возможно, используя Cygwin? Даже если это не очень похоже на проблему переменных окружения. Убедитесь, что PYTHONPATH установлен правильно. Я предлагаю создать системную переменную с именем PYTHONPATH, которая содержит ваш каталог установки python (возможно, что-то вроде C:/Python27), а также папки подкаталогов "Lib", "Lib/lib-tk" и "DLLs" в этой папке, См. здесь.

И менее вероятно... Вы используете это в системе Linux? Убедитесь, что в каталоге установлены соответствующие разрешения. В bash используйте 'ls -la', чтобы показать разрешения. Из каталога запустите 'chmod u + w.' для обеспечения разрешения на запись.