我正在尋找在我的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