problem mit logger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
damiro
User
Beiträge: 4
Registriert: Freitag 27. Januar 2006, 12:03

Hallo,

ich habe ein Problem mit dem logging Modul in der standard library.

Dies ist mein Python:
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32

Ich benutze folgenden Code:

Code: Alles auswählen

import logging
logging.basicConfig(level=logging.INFO,
                    format=logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s'),
                    datefmt='%Y-%m-%d %H:%M',
                    stream=sys.stdout)
wenn ich jetzt meinen logger benutzen will, sieht das so aus:

Code: Alles auswählen

logging.info("Blah blah blah")
und führt zu folgendem Ergebnis:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Programme\Python25\lib\logging\__init__.py", line 744, in emit
    msg = self.format(record)
  File "C:\Programme\Python25\lib\logging\__init__.py", line 630, in format
    return fmt.format(record)
  File "C:\Programme\Python25\lib\logging\__init__.py", line 419, in format
    if string.find(self._fmt,"%(asctime)") >= 0:
  File "C:\Programme\Python25\lib\string.py", line 359, in find
    return s.find(*args)
AttributeError: Formatter instance has no attribute 'find'
Ich wäre dankbar, wenn mir jemand dieses Phänomen erklären könnte. Ich verstehe nicht, was an meinem Code nicht in Ordnung sein könnte.

Danke und Viele Grüße
Daniel
BlackJack

@damiro: Es wird versucht auf einem `Formatter`-Exemplar die `find()`-Methode aufzurufen -- sagt die Fehlermeldung. So eine Methode haben `Formatter` nicht. Zeichenketten haben die. Wenn Du jetzt noch schaust wo *Du* einen `Formatter` erstellst, und dann in die Doku schaust was an der Stelle eigentlich stehen müsste, sollte der Fehler eigentlich klar sein. :-)
damiro
User
Beiträge: 4
Registriert: Freitag 27. Januar 2006, 12:03

Danke, ich hab's gefunden.

Das Problem war, dass logging.basicConfig() bei dem 'format' Parameter einen einfachen String bekommt und keine logging.Formatter() Instanz.
Antworten