Je suis à la recherche d'une possibilité de consigner des messages dans mon projet Flex 4.5. Cela devrait couvrir les erreurs dans remoteClasses, errorHandler ou les messages tapés à la main. Après avoir lu beaucoup de pages Web, la solution de parslay semble bonne. Je veux passer à ce cadre de toute façon. L'avantage est la possibilité de configurer le comportement de journalisation au moment de l'exécution. mais je ne comprends pas la documentation. peut-être parce que je suis tout nouveau dans le persil. Aussi, google n'a aucun résultat approprié.Journalisation Flex and Persil
Avez-vous déjà fait cela et il est possible que vous me donniez quelques extraits de code. Merci beaucoup
Frank
EDIT: En raison de la critique justifiée J_A_X, j'ajouter mon code, parce que je l'ai partiellement réussi.
D'abord, nous avons besoin d'un fichier de configuration, car je veux configurer le comportement de la journalisation en cours d'exécution. C'est un simple fichier xml dans la racine du projet.
<?xml version="1.0" encoding="UTF-8"?>
<objects
xmlns="http://www.spicefactory.org/parsley"
xmlns:log="http://www.spicefactory.org/parsley/flex/logging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.spicefactory.org/parsley
http://www.spicefactory.org/parsley/schema/2.3/parsley-core.xsd
http://www.spicefactory.org/parsley/flex/logging
http://www.spicefactory.org/parsley/schema/2.3/parsley-logging-flex.xsd"
>
<log:target level="info" type="components.SocketTarget">
</log:target>
</objects>
Ceci est mon application:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600"
initialize="onAppInitiallize(event)"
xmlns:parsley="http://www.spicefactory.org/parsley"
>
<fx:Script>
<![CDATA[
import mx.controls.Label;
import mx.events.FlexEvent;
import mx.logging.Log;
import org.spicefactory.lib.logging.LogContext;
import org.spicefactory.parsley.flex.logging.FlexLoggingXmlSupport;
protected function onAppInitiallize(event:FlexEvent):void
{
FlexLoggingXmlSupport.initialize();
LogContext.getLogger(this);
//Log.getLogger("myCat").info("MyInfo");
}
protected function button1_clickHandler():void
{
Log.getLogger(this.toString()).info("myMessage");
Log.getLogger(this.toString()).fatal("myMessage");
}
]]>
</fx:Script>
<fx:Declarations>
<parsley:ContextBuilder>
<parsley:XmlConfig file="config.xml"/>
</parsley:ContextBuilder>
</fx:Declarations>
<s:Button click="button1_clickHandler()" label="SendLogToParsley" />
</s:Application>
À ce stade, l'exploitation forestière fonctionnera dans la console du constructeur flex, parce que le persil utilise par défaut le TraceTarget. Maintenant, je veux envoyer mes fichiers journaux à une socket. J'ai écrit un peu SocketTarget rugueux.
package de.axurit.components
{
import flash.net.Socket;
import mx.logging.AbstractTarget;
import mx.logging.LogEvent;
import mx.logging.targets.LineFormattedTarget;
public class SocketTarget extends AbstractTarget
{
private var _host:String;
private var _port:int;
private var _socket:Socket;
public function SocketTarget(host:String = "localhost",port:int=8085)
{
_host = host;
_port = port;
_socket = new Socket (host,port);
super();
}
override public function logEvent (event:LogEvent):void
{
trace ("logevent" + event.message);
_socket.writeUTF(event.message + String.fromCharCode(13));
_socket.flush();
}
}
}
Dans la documentation de persil je peux voir le commentaire
Le type de cible par défaut créé par cette balise est un TraceTarget. Vous pouvez déclarer explicitement d'autres types de cibles:
Si j'ajouter le type attribut, je reçois un errorMessage « Une ou plusieurs erreurs dans BootstrapProcessor ». La même chose que j'ai reçu après une faute de frappe.
Pouvez-vous me donner quelques conseils, comment puis-je envoyer mes journaux à une destination socket?
Je vais voter pour fermer si cette question ne peut pas être nettoyé. Que demandez-vous exactement? Juste pour des exemples? Qu'est-ce que vous essayez d'accomplir? Avez-vous regardé la section de journalisation dans le manuel Dev de Persil? Qu'avez-vous essayé? Où est le code? –
oui vous avez raison. hier j'étais un peu désespérée. Je n'étais pas sûr, si c'est possible en général et je ne sais pas, comment et si je peux mettre en œuvre ceci. Tous les essais avaient pris fin à NIL. Donc ma question était, si quelqu'un a un exemple simple, comment je peux enregistrer quelque chose que je persiste. Je ne pense pas que cela soit rarement utilisé. – Frank