[Python-de] Traceback ohne Exception
Andi Albrecht
andialbrecht at web.de
Mit Okt 5 16:21:23 CEST 2005
Hallo Henning,
versuch es mal mit sys._getframe(1). Die Funktion liefert dir ein
Frame-Objekt zurück. Falls "sendLog" aus einer Funktion heraus
aufgerufen wollte (das wird wohl die Regel sein...), dann kommst du an
den Funktionsnamen mit frame.f_code.co_name an den Namen der Funktion.
Grüße,
Andi
Henning.Ramm at mediapro-gmbh.de wrote:
> Ahoi!
>
> Ich versuche, Python's Standard-Logging durch eine Dispatcher- & Twisted-Reactor-Lösung zu ersetzen:
>
> def sendLog(self, message, level='INFO', **kwargs):
> """
> Sends a 'Log' signal using dispatcher and reactor.
>
> `message`
> can be anything, but must be str()able,
> unchanged message is sent as 'message', str(message) as 'text' key.
>
> `level`
> should be in '(DEBUG, INFO, WARNING, ERROR, CRITICAL)'
> (default log levels)
> """
> return reactor.callLater(0, dispatcher.send, sender=self,
> signal='Log', level=level,
> text=str(message), message=message, **kwargs)
>
> Somit kann ich verschiedene Log-Handler auf das Signal reagieren lassen.
> Was mir dabei noch fehlt, ist die Angabe der Zeile/Funktion, von wo
> 'sendLog' aufgerufen wurde.
>
> Ich nehme an, dass man das mit dem traceback-Modul irgendwie herausbekommt; nach der Doku sieht es aber so aus, als müsste ich dazu eine Exception liefern.
>
> Könnte mir da bitte jemand auf die Sprünge helfen? Wie finde ich heraus, von wo aus eine Funktion aufgerufen wurde, möglichst über mehrere Stufen (hier: dispatcher.send, reactor.callLater, sendLog)?
>
>
> Grüße vom Südsee!
> Henning Hraban Ramm
> Südkurier Medienhaus / MediaPro
> Systembetreuung / Systementwicklung
>
> _______________________________________________
> python-de maillist - python-de at python.net
> http://python.net/mailman/listinfo/python-de
>