2014-10-07 7 views
11

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

+2

могли бы вы transelate с немецкого на английский? Это было бы намного проще. –

+1

Я только что редактировал свое оригинальное сообщение. Единственный немецкий там в основном говорит, что файл «example.log» не существует. Это то, что я хотел показать, но я не понимал, что на выходе появился какой-то немецкий. Извините за это ... – Chris

+0

Объем в Laufwerk C: hat keine Bezeichnung. -> Том C: нет Название | Datei nicht gefunden -> Файл не найден | Verzeichnis von ...--> Справочник от ... –

ответ

18

Причина вашего неожиданного результата в том, что вы используете что-то поверх Python (выглядит как IPython), который настраивает сам корневой журнал. Согласно the documentation for 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 
1

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

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

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

+0

Я использую Windows ... Я попытался установить переменную среды, как описано в вашей ссылке, но пока не повезло. Я думаю, что-то немного подозрительно в моей установке на Python.Если я запустил Python из командной строки Windows, а затем введите 'import logging', за которым следует' logging.basicConfig() 'Я получаю сообщение об ошибке. Python утверждает, что в журнале нет атрибута 'basicConfig'. Это все действительно странно ... – Chris

+0

Вы используете cygwin? – DanRea

+0

Какова ваша переменная среды PYTHONPATH? – DanRea

Смежные вопросы