2014-10-07 14 views
11

Ich versuche eine Protokollierung für die Aufzeichnung von Nachrichten zu implementieren. Ich bekomme ein seltsames Verhalten, also habe ich versucht, ein minimales Beispiel zu finden, das ich gefunden habe here. Wenn ich kopieren Sie einfach den einfachen Beispiel beschrieben es in meinem Dolmetscher wird die Datei nicht erstellt, wie Sie hier sehen können:Python erstellt keine Protokolldatei

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 

jemand kann mir helfen, zu verstehen, was ich falsch mache? Danke ...

EDIT: änderte die Ausgabe nach der zweiten Eingabe in Englisch und entfernte die unnötigen Teile. Die einzige wichtige Sache ist, dass Python die Datei example.log nicht erstellt.

+2

bitten Sie von Deutsch auf Englisch transelate? Das wäre viel einfacher. –

+1

Ich habe gerade meinen ursprünglichen Post bearbeitet. Der einzige Deutsche dort sagt im Grunde, dass die Datei 'example.log' nicht existiert. Das wollte ich zeigen, aber mir war nicht klar, dass in der Ausgabe etwas Deutsch war. Sorry dafür ... – Chris

+0

Volume in Laufwerk C: hat keine Kennzeichnung. -> Band C: hat keinen Titel | Datei nicht gefunden -> Datei nicht gefunden | Verzeichnis von ...-> Verzeichnis von ... –

Antwort

18

Der Grund für Ihr unerwartetes Ergebnis ist, dass Sie etwas über Python (sieht wie IPython) verwenden, die den Root-Logger selbst konfiguriert. Wie pro the documentation for basicConfig(), tut

Diese Funktion nichts, wenn der Root-Logger bereits Handler hat dafür konfiguriert.

Was Sie mit nur Python bekommen so etwas wie diese:

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

Bitte geben Sie an, welches Betriebssystem Sie verwenden.

Verwenden Sie Windows, vielleicht mit Cygwin? Auch wenn das nicht wie ein Problem mit Umgebungsvariablen aussieht. Stellen Sie sicher, dass PYTHONPATH richtig eingestellt ist. Ich schlage vor, eine Systemvariable namens PYTHONPATH zu erstellen, die Ihr Python-Installationsverzeichnis (wahrscheinlich so etwas wie C:/Python27) und die Unterverzeichnisse Lib, lib/lib-tk und DLLs ebenfalls in diesem Ordner enthält . Siehe here.

Und weniger wahrscheinlich ... Führen Sie dies auf einem Linux-System? Stellen Sie sicher, dass die entsprechenden Berechtigungen für das Verzeichnis festgelegt sind. Verwenden Sie in bash 'ls -la', um die Berechtigungen anzuzeigen. Aus dem Verzeichnis 'chmod u + w' ausführen um sicherzustellen, dass Sie Schreibrechte haben.

+0

Ich benutze Windows ... Ich habe versucht, die Umgebungsvariable wie in Ihrem Link erläutert, aber bisher kein Glück. Etwas ist ein bisschen fischig über meine Python-Installation, denke ich.Wenn ich Python über die Windows-Befehlszeile starte und dann 'import logging' gefolgt von' logging.basicConfig() 'schreibe, erhalte ich einen Fehler. Python behauptet, dass die Protokollierung kein Attribut 'basicConfig' hat. Das ist alles wirklich komisch ... – Chris

+0

Lässt du Cygwin laufen? – DanRea

+0

Wie ist Ihre PYTHONPATH-Umgebungsvariable eingestellt? – DanRea