Hallo
Habe folgendes Problem...
Ich begann mit logging in meinem Programm Logs hinzuzufügen. Nun hätte ich allerdings gerne, das auch stderr umgeleitet wird, in das Logfile schreibt.
Bis anhin keine grosse Sache, nun aber zu meinem Problem...
Wenn ein Traceback ausgegeben wurde (nur dann wird stderr verwendet), hätte ich gerne die ganze traceback meldung in eienr liste zusammengeknäult , damit ich ein kleines Fenster öffnen kann, womit der Benutzer mir dann den Traceback und ggf. eine Fehlermeldung senden kann.
Ist das irgend wie möglich?
Greeze DM
stderr Ausgabe umleiten und...
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi DM!DatenMetzgerX hat geschrieben:hätte ich gerne die ganze traceback meldung in eienr liste zusammengeknäult
Vielleicht kannst du da etwas für dich raus holen:
Code: Alles auswählen
#!/usr/bin/env python -O
# -*- coding: iso-8859-1 -*-
try:
f = file("mich_gibt_es_nicht.txt")
except Exception, inst:
import traceback, sys
tb = traceback.format_tb(sys.exc_traceback)
print "-"*80
print "Fehler: %s" % inst
print "Startmodul: %s" % sys.argv[0].strip()
print "Zeilennummer: %s" % traceback.tb_lineno(sys.exc_traceback)
print "Dateiname: %s" % tb[0].split(",")[0].strip()[6:-1]
print "-"*80
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
So kurz getestet scheint es zu funktionieren, allerdings sind die tracebacks von python ein wenig ausführlicher (Vorallem der Verlauf des Programmes wäre nice )
Zusätzlich habe ich noch folgendes Problem ...
Wie kann ich ein Try ... except um meine ganze wxpython anwendung legen...
Er fängt die Exception nicht ab
Zusätzlich habe ich noch folgendes Problem ...
Wie kann ich ein Try ... except um meine ganze wxpython anwendung legen...
Code: Alles auswählen
sys.stdout = output.stdout()
sys.sterr = output.stderr()
try:
app = wx.PySimpleApp(False)
frame = MainFrame(None)
frame.Show()
app.SetTopWindow(frame)
app.MainLoop()
except Exception, ex:
sys.stderr.write(None, ex)
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Hier meine Lösung...
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import data
import os
import logging
class logger(object):
log = None
@staticmethod
def getInstance():
if logger.log is None:
logger.log = logging
logger.log.basicConfig(level = logging.DEBUG,
format='%(asctime)s %(levelname)s: %(message)s',
filename = os.path.join(data.PATH, 'logfile.log'),
filemode='w')
msg = os.linesep * 2 + 30*'-' + os.linesep + "Logger wurde gestartet" + os.linesep+ 30 *'-' + os.linesep * 2
logger.log.info(msg)
return logger.log
class stdout(object):
def __init__(self):
self.__log = logger.getInstance()
def write(self, t):
if not t == '\n' and t:
self.__log.info(t)
class stderr(object):
def __init__(self):
self.__log = logger.getInstance()
def write(self, ex):
self.__log.exception(ex)
def stdout(self, t):
self.write(t)
if __name__ == '__main__':
try:
import sys
sys.stdout = stdout()
sys.stderr = stderr()
print 'INFOS'
sys.stderr.write('uiii')
k.kw()
except Exception, ex:
sys.stderr.write(ex)
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Es geht leider doch noch nicht ganz
alle FEhler die nach dem app.MainLoop() auftregen fänt mein try: ... except nicht ab. Wüsste noch jemand, was ich machen könnte?
alle FEhler die nach dem app.MainLoop() auftregen fänt mein try: ... except nicht ab. Wüsste noch jemand, was ich machen könnte?
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Ich kann dir nicht sagen, ob es nun wierklich funktioniert... habe das Projekt irgend wann stillgelegt...
http://paste.pocoo.org/show/44339/
output.py regeld das Exception handling... das onerror ist ein Fenster, dass im Falle eines Fehlers angezeigt wird -> Bei fehler vor dem initialisieren der App knallt es, denn die App muss ja zuerst initialisiert sein.
Es ist sicherlich noch überarbeitungs fähig, auch könnte man den Programmierstiel noch verbessern, jedoch funktioniert es im gross und ganzem...
Ich hoffe, dass es dir hilft!
http://paste.pocoo.org/show/44339/
output.py regeld das Exception handling... das onerror ist ein Fenster, dass im Falle eines Fehlers angezeigt wird -> Bei fehler vor dem initialisieren der App knallt es, denn die App muss ja zuerst initialisiert sein.
Es ist sicherlich noch überarbeitungs fähig, auch könnte man den Programmierstiel noch verbessern, jedoch funktioniert es im gross und ganzem...
Ich hoffe, dass es dir hilft!