5 Stimmen

Produktionsprotokollierung in Flex

Gibt es eine Möglichkeit, die Trace-Anweisungen Ihrer Flex-App zu erfassen, wenn sie nicht im Debug-Modus läuft?

Oder gibt es einen anderen Weg, um Protokollinformationen auszugeben, wenn kein Debugger läuft?

Derzeit versuche ich, einen Fehler zu beheben, der sich nur in einem sehr spezifischen Bereitstellungsszenario zeigt, aber ich könnte mir vorstellen, dass dies in einigen Fällen nützlich ist, damit Kunden Protokolle an den technischen Support senden können, wenn sie Fehler oder andere Probleme melden.

3voto

hasseg Punkte 6737

Ich nehme an, du redest von Adobe Flex und zielen auf den Flash Player ab?

Wenn ja, kannst du deine eigene Logging-Wrapper-Klasse schreiben, die Log-Meldungen, die an sie gesendet werden, an mehrere Ziele weiterleitet (wie den Trace-Stack und den internen Speicher, sodass du auf das Log von innerhalb der App zugreifen und es z.B. an einen Server senden kannst, wenn der Benutzer zustimmt, einen Fehlerbericht zu senden). Siehe auch das Flex-Logging-Framework, das so etwas bereits enthält.

Ich habe tatsächlich etwas Ähnliches gemacht - Ich habe eine Klasse namens Log mit statischen Methoden wie log(), debug(), error() usw., die ich in meinen Apps verwende, und diese Klasse leitet alle Nachrichten, die an sie gesendet werden, über trace() in den Trace-Stack weiter, in eine "Log-Konsole"-App, die auf dem gleichen Host läuft, über LocalConnection und/oder Socket (eine Socket-Verbindung ist offensichtlich viel schneller als LocalConnection), und speichert sie auch lokal in einem Array, sodass Benutzer Fehlerberichte zusammen mit dem Log-Output direkt aus der App senden können.

Eine solche Änderung bedeutet natürlich, dass du alle trace()-Befehle in deinem Code in Aufrufe des Logging-Systems übersetzen müsstest, aber das kann mit einer einfachen regex-Suche & Ersetzen leicht erreicht werden.

2voto

Mike Deck Punkte 17515

Es gibt ein Projekt auf Google Code namens Thunder Bolt, das es Ihnen ermöglicht, Log-Nachrichten zu schreiben, die in FireBug erscheinen, wenn die Anwendung in Firefox ausgeführt wird (vorausgesetzt, dass Sie diese Erweiterung installiert haben.)

Das Logging mit diesem Tool ist so einfach wie:

import org.osflash.thunderbolt.Logger;

var myNumber: int = 5;
var myString: String = "Lorem ipsum";
Logger.error ("Logging zwei Objekte: Eine Zahl als int und ein String", myNumber, myString);

1voto

Joeri Sebrechts Punkte 10918

Ich habe alcon in der Vergangenheit verwendet.

http://blog.hexagonstar.com/alcon/

0voto

Yaba Punkte 5949

Sie können XPanel von Farata Systems ausprobieren. Dies ist eine native Windows-Benutzeroberfläche, die Log-Nachrichten mithilfe der Flex 3-Logging-API anzeigen kann, auch für Flex-Anwendungen, die im Browser ausgeführt werden. Leider haben sie ihre Website neu gestaltet und ich kann sie nicht mehr finden... Vielleicht hilft Ihnen Google.

Wir haben etwas anderes mit JavaScript gemacht. Der Kunde kann eine 'spezielle' Seite öffnen, die Protokoll- und Trace-Anweisungen mithilfe von DHTML anzeigt. Die Flex-Anwendung ruft eine JavaScript-Funktion auf, die der Anwendung mitteilt, ob diese Seite geöffnet ist oder nicht. Wenn nicht, ist die Protokollierung deaktiviert. Wenn sie geöffnet ist, ist das Protokollieren aktiviert und alle Protokollanweisungen werden dieser Seite angehängt.

Beachten Sie, dass es aufgrund von Sandbox-Einschränkungen keine Möglichkeit gibt, die Protokollausgabe ständig in das Dateisystem zu schreiben. Ein Kunde kann jedoch problemlos den Inhalt des Protokollfensters wie oben erklärt kopieren und einfügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X