Seite 1 von 1

Modul logging macht nicht das was ich will :(

Verfasst: Samstag 12. Januar 2013, 19:03
von sedi
Hallo zusammen,

sitze hier schon seit Stunden und komm' nicht auf die Lösung.

Folgender Code erstellt nicht die Datei die in prefs.LOGFILE festgelegte Datei.
Auch gibt der nachfolgende Code nichts auf der Konsole aus aus? Wieso

Code: Alles auswählen

def setuplog():
    logging.basicConfig( 
        filename=prefs.LOGFILE, 
        level=prefs.VERBOSITY, 
        format = "%(asctime)s [%(levelname)-8s] %(message)s") 
    logging.debug("logging system installed [level=%s]" % (prefs.VERBOSITY))


def main():
    setuplog()
Hier die wesentlichen Daten aus der prefs.py:

Code: Alles auswählen

import logging 
VERBOSITY = logging.DEBUG
LOGFILE = "system.log"

Re: Modul logging macht nicht das was ich will :(

Verfasst: Samstag 12. Januar 2013, 20:43
von BlackJack
@sedi: Der Code macht gar nichts weil `main()` nicht aufgerufen wird. Und würdedie Funktion aufgerufen gäbe es einen `NameError` weil `prefs` nicht importiert wird. `logging` im übrigen auch nicht.

Re: Modul logging macht nicht das was ich will :(

Verfasst: Samstag 12. Januar 2013, 21:44
von sedi
Hi @BlackJack:

Tschuldige, habe vom Modul

Code: Alles auswählen

program.py
nur die relevanten Teile angegeben. Es ist relativ umfangreich und ich habe mich daher auf die entscheidenden Stellen beschränkt.

Ich rufe das Modul übrigens über

Code: Alles auswählen

python program.py 
auf!

Ich hänge jetzt noch mal die beiden betreffenden Module mit den entscheidenden Stellen an:

Code: Alles auswählen

import logging
import prefs

# and many further imports

def setuplog():
    logging.basicConfig(
        filename=prefs.LOGFILE,
        level=prefs.VERBOSITY,
        format = "%(asctime)s [%(levelname)-8s] %(message)s")
    logging.debug("logging system installed [level=%s]" % (prefs.VERBOSITY))


def main():
    setuplog()
    ...
    return 0


if __name__ == "__main__":
    return main()
Und der relevante Code aus der 'prefs':

Code: Alles auswählen

import logging
VERBOSITY = logging.DEBUG
LOGFILE = "system.log"

Re: Modul logging macht nicht das was ich will :(

Verfasst: Samstag 12. Januar 2013, 22:12
von BlackJack
@sedi: Woher weisst Du dass das der entscheidende Teil ist? Wenn man die beiden Fehler ausbessert, die ... und das ``return`` auf Modulebene, dann läuft der Code nämlich und erstellt eine `system.log`-Datei mit dem Inhalt den man erwarten würde. Wenn Du weiteren Quelltext zeigst, wäre es nett wenn Du ihn ausprobierst. Wenn er nicht läuft oder gar kein Problemverhalten zeigt, kann man auch schlecht sagen wo ein Fehler ist. Das geht dann nur mit raten.

Re: Modul logging macht nicht das was ich will :( [SOLVED]

Verfasst: Samstag 12. Januar 2013, 23:01
von sedi
Hi @BlackJack:

ich habe den Fehler gefunden, auch dank Deiner Dir eigenwilligen Art der Hilfestellung:
BlackJack hat geschrieben:Wenn man die beiden Fehler ausbessert, die ... und das ``return`` auf Modulebene, dann läuft der Code nämlich und erstellt eine `system.log`-Datei mit dem Inhalt den man erwarten würde..
Du hattest recht, der relevante Teil hat gefehlt. Ich habe ein anderes Modul mittels

Code: Alles auswählen

from Package import *
eingebunden, was eine Namenskollision verursachte. Nach der Ausbesserung hats geklappt - Mann, das hat mich Stunden gekostet. Also noch mal Danke für Deine Hilfe!
Nur aus Interesse: Welche zwei Fehler hast Du denn gemeint? :wink: Ich rate mal: In folgender Zeile fehlt in der Klammer bei

Code: Alles auswählen

 (prefs.VERBOSITY)
das Komma, somit verbessert:

Code: Alles auswählen

logging.debug("logging system installed [level=%s]" % (prefs.VERBOSITY,))
Und natürlich das

Code: Alles auswählen

if __name__ == "__main__":
    return main()

Sollte man in sys.exit() umwandeln denke ich...

Re: Modul logging macht nicht das was ich will :(

Verfasst: Samstag 12. Januar 2013, 23:12
von lunar
@sedi Warum genau ist BlackJacks Art „eigenwillig“?

Re: Modul logging macht nicht das was ich will :( [SOLVED]

Verfasst: Samstag 12. Januar 2013, 23:28
von sedi
@lunar: Hi - tja wegen der Zeile
Wenn man die beiden Fehler ausbessert, die ... und das ``return`` auf Modulebene, dann läuft der Code nämlich und erstellt eine `system.log`-Datei mit dem Inhalt den man erwarten würde..
Ich habe das nicht böse gemeint. "Eigenwillig" fand ich am passendsten, da die drei Punkte doch wohl für etwas stehen was auszubessern gewesen wäre. Er hat es aber nicht verraten - ein kleines Rätsel anstatt eines Hinweises - fand ich eben eigenwillig - war aber sehr hilfreich. Habe aus genau dem Grund noch mal nachgefragt, was er gesehen hat

Also nichts für ungut

Re: Modul logging macht nicht das was ich will :(

Verfasst: Sonntag 13. Januar 2013, 00:10
von BlackJack
@sedi: Die drei Punkte standen für genau drei Punkte und für nichts anderes. Bei Dir im Quelltext standen sie höchstwahrscheinlich für ausgelassenen Python-Code, aber sie sind nun mal keine gültige Python-Syntax. ;-) Also muss man sie entweder weglassen oder als Kommentar setzen, damit Dein Quelltext lauffähig wird.

Re: Modul logging macht nicht das was ich will :(

Verfasst: Sonntag 13. Januar 2013, 00:17
von sedi
@BlackJack: Dann war das ein Missverständnis meinerseits - war nicht böse gemeint - hat mir ja geholfen das Problem zu lösen.