
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@python.net http://python.net/mailman/listinfo/python-de

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@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@python.net http://python.net/mailman/listinfo/python-de
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (2)
-
Andi Albrecht
-
Henning.Ramm@mediapro-gmbh.de