Я ищу возможность регистрировать сообщения в моем проекте Flex 4.5.Это должно охватывать сообщения об ошибках в remoteClasses, errorHandler или сообщениях, набираемых вручную.После прочтения большого количества веб-страниц решение от parslay выглядит хорошо.в любом случае я хочу переключиться на эту платформу.
преимущество заключается в возможности настройки поведения ведения журнала во время выполнения.но я не понимаю документацию.возможно, потому что я новичок в петрушке.Также у Google нет подходящего результата.
Вы уже сделали это, и вы можете дать мне несколько фрагментов кода.Большое спасибо
Фрэнк
РЕДАКТИРОВАТЬ: Из-за обоснованной критики J_A_X, я добавляю свой код, потому что я частично преуспел.
Сначала нам нужен файл конфигурации, потому что яхотите настроить ведение журнала во время выполнения.Это простой xml-файл в корне проекта.
<?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>
Это мое приложение:
<?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>
На этом этапе ведение журнала будет работать в консоли Flex Builder.потому что петрушка по умолчанию использует TraceTarget.Теперь я хочу отправить мои файлы журналов в сокет.Я написал несколько грубый SocketTarget.
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();
}
}
}
В документации по петрушке я вижу комментарий
Тип цели по умолчанию, созданный этим тегом, - TraceTarget.Вы можете явно объявить другие целевые типы:
Если я добавлю атрибут типа, я получу сообщение об ошибке «Одна или несколько ошибок в BootstrapProcessor».Так же, как я получил после опечатки.
Можете ли вы дать мне несколько советов, как я могу отправить свои журналы в место назначения сокета?