[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
>