我正在寻找在我的flex 4.5项目中记录消息的可能性。这应该包括remoteClasses,errorHandler或手动输入的消息中的错误消息。 阅读了很多网页后,parslay的解决方案看起来很不错。我还是想切换到这个框架。
好处是可以在运行时配置日志记录行为。但我不明白文件。也许是因为我在欧芹中全新。谷歌也没有合适的结果。
你是否已经这样做了,你可以给我一些代码片段。 非常感谢
谢
编辑: 由于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构建器的控制台中工作,因为parsley默认使用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。您可以 明确声明其他目标类型:
如果我添加了type-attribute,我会收到Errormessage“BootstrapProcessor中的一个或多个错误”。与我在输入错字后收到的相同。
您能给我一些提示吗,我如何将日志发送到套接字目的地?
答案 0 :(得分:0)
您正在创建套接字,但从未实际连接它。另外,如果您要创建日志目标,请使您的类扩展跟踪目标并覆盖日志功能。