我正在寻找在我的Flex 4.5项目中记录消息的可能性。这应该涵盖remoteClasses,errorHandler或手动输入消息中的错误消息。 阅读了很多网页之后,来自parslay的解决方案看起来不错。无论如何,我想切换到这个框架。Flex和欧芹记录
好处是可以在运行时配置日志记录行为。但我不明白这些文档。也许是因为我是欧芹的全新品牌。谷歌也没有合适的结果。
您是否已经完成了这项工作,并且可以给我一些代码片段。 非常感谢
弗兰克
编辑: 由于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。您可以 显式声明的其他目标类型:
如果我添加类型属性,我收到一个ERRORMESSAGE“在BootstrapProcessor一个或多个错误”。与我在打字错误后收到的一样。
你可以给我一些提示,我可以如何将我的日志发送到套接字目的地?
如果此问题无法清理,我将投票结束。你到底在问什么?只是为了举例?你想达到什么目的?你看过Parsley Dev手册中的日志记录部分了吗?你有什么尝试?代码在哪里? –
是的,你是对的。昨天我有点绝望。我不确定,如果一般情况下是可能的,但不知道,如何以及如果我能实现这一点。所有尝试都以无效结束。所以我的问题是,如果有人有一个简单的例子,我怎么可以登录我的香菜。我不认为这很少使用。 – Frank