2008-09-19 4 views
5

Gibt es eine Möglichkeit, die Trace-Anweisungen Ihrer Flex-App zu erfassen, während sie nicht im Debug-Modus ausgeführt wird?Produktionsprotokollierung in Flex

Oder gibt es eine andere Möglichkeit, Protokollinformationen auszugeben, wenn kein Debugger ausgeführt wird?

Momentan versuche ich einen Fehler zu beheben, der sich nur in einem sehr spezifischen Bereitstellungsszenario darstellt, aber in einigen Fällen kann es nützlich sein, wenn Kunden Protokolle an den technischen Support senden, wenn sie Fehler oder andere Probleme melden.

Antwort

3

Ich nehme an, Sie sprechen über Adobe Flex, Targeting auf den Flash Player?

Wenn ja, können Sie Ihre eigene Protokollierungs-Wrapper-Klasse schreiben, die an sie gesendete Protokollnachrichten an mehrere Ziele weiterleitet (z. B. den Trace-Stack und den internen Speicher), damit Sie von der App auf das Protokoll zugreifen und es z Server, wenn der Benutzer zustimmt, einen Fehlerbericht zu senden). Siehe auch die Flex logging framework für etwas, das bereits existiert.

Ich habe tatsächlich etwas getan - ich habe eine Klasse Log mit statischen Methoden wie log() genannt, debug(), error() usw., die ich in meiner Apps nutzen, und diese Klasse leitet alle Nachrichten in die Spur geschickt Stack über trace(), in eine "log console" -App auf demselben Host über LocalConnection und/oder Socket (eine Socket-Verbindung ist natürlich viel schneller als LocalConnection) und speichert sie auch lokal in einem Array, so dass Benutzer Fehlerberichte senden können mit der Protokollausgabe direkt aus der App heraus.

Diese Art einer Änderung bedeutet natürlich, dass Sie alle trace() Befehle in Ihrem Code in Aufrufe an das Protokollierungssystem übersetzen müssen, aber das kann leicht mit einer Regex-Suche & ersetzt werden.

0

Sie können XPanel von Farata Systems versuchen. Dies ist eine native Windows-Benutzeroberfläche, die Protokollnachrichten mithilfe der Flex 3-Protokollierungs-API auch für Flex-Anwendungen anzeigen kann, die in einem Browser ausgeführt werden. Leider haben sie ihre Seite neu gestaltet und ich kann sie nicht mehr finden ... Vielleicht wird Google Ihnen helfen.

Wir haben etwas anderes mit JavaScript gemacht. Der Kunde kann eine "spezielle" Seite öffnen, auf der Protokoll- und Trace-Anweisungen mit DHTML angezeigt werden. Die Flex-Anwendung ruft eine JavaScript-Funktion auf, die der Anwendung mitteilt, ob diese Seite geöffnet ist oder nicht. Ist dies nicht der Fall, ist die Protokollierung deaktiviert. Wenn es geöffnet wird, ist die Protokollierung aktiviert und alle Protokollanweisungen werden an diese Seite angehängt.

Beachten Sie, dass es aufgrund von Sandbox-Einschränkungen nicht möglich ist, ständig Protokollierungsausgaben in das Dateisystem zu schreiben. Ein Kunde kann jedoch die Ausgabe des Protokollierungsfensters einfach kopieren und einfügen, wie oben erläutert.

2

Es gibt ein Projekt auf Google Code genannt Thunder Bolt, die Sie Log-Meldungen schreiben können, die in FireBug angezeigt wird, wenn die Anwendung in Firefox ausgeführt wird (vorausgesetzt natürlich, dass Sie die Erweiterung installiert.)

mit diesem Tool Logging ist so einfach wie:

import org.osflash.thunderbolt.Logger; 

var myNumber: int = 5; 
var myString: String = "Lorem ipsum"; 
Logger.error ("Logging two objects: A number typed as int and a string", myNumber, myString);