2011-09-01 3 views
0

내 flex 4.5 프로젝트에서 메시지를 기록 할 수있는 가능성을 찾고 있습니다. 이것에 의해, remoteClasses, errorHandler의 에러 메세지, 또는 수동으로 입력 된 메세지가 포함될 필요가 있습니다. 많은 웹 페이지를 읽은 후에 파슬 레이션의 솔루션이 좋게 보입니다. 어쨌든이 프레임 워크로 전환하고 싶습니다.플렉스 및 파슬리 로깅

런타임시 로깅 동작을 구성 할 수있는 이점이 있습니다. 하지만 나는 설명서를 이해하지 못합니다. 아마도 나는 파슬리에서 아주 유명해 졌을 것입니다. 또한 google에는 적당한 결과가 없다.

이미 해 보셨나요? 몇 가지 코드 스 니펫을 제공 할 수 있습니다. 덕분에 많은

프랭크

편집 : J_A_X는 비판을 정당화의 내가 부분적으로 성공했기 때문에 때문에, 난 내 코드를 추가합니다.

먼저 런타임에서 로깅 동작을 구성하기 때문에 구성 파일이 필요합니다. 이것은 프로젝트 루트에있는 간단한 xml 파일입니다. 파슬리는 기본적 TraceTarget으로 사용하기 때문에,이 시점에서

<?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> 

가, 로깅은 플렉스 빌더의 콘솔에서 작동합니다 :

<?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> 

이 내 응용 프로그램입니다. 자, Logfiles를 소켓에 보내고 싶습니다. 나는 litte rough 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에서 하나 이상의 오류"를받을 수 있습니다. 오타가 나도 마찬가지예요.

몇 가지 힌트를 줄 수 있습니까? 내 로그를 소켓 대상으로 보낼 수 있습니까?

+0

이 질문을 해결할 수 없으면 투표 마감을하겠습니다. 정확히 무엇을 요구하고 있습니까? 예를 들면? 무엇을 성취하려고합니까? Parsley의 Dev 매뉴얼에서 로깅 섹션을 보셨습니까? 너 뭐 해봤 니? 코드는 어딨어? –

+0

예, 맞습니다. 어제 나는 절망적 이었어. 확실하지 않았습니다. 일반적인 경우 가능하고 모르는 경우 어떻게 구현할 수 있습니까? 모든 시도는 NIL에서 끝났습니다. 그래서 제 질문은, 누군가 간단한 예제를 가지고 있다면, 파슬리에 어떻게 로그 할 수 있는지입니다. 나는 이것이 거의 사용되지 않는다고 생각하지 않는다. – Frank

답변

0

소켓을 만들고 있지만 실제로는 연결하지 마십시오. 또한 로그 대상을 만들려면 클래스를 추적 대상으로 확장하고 로그 함수를 재정의하십시오.

+0

소켓은 테스트 일뿐입니다. 연결을 제어하는 ​​메소드는 나중에 기록됩니다. 이 단계에서는 기능 만 있으면됩니다. 이제 수업은 TraceTarget에서 확장됩니다. 하지만 config.xml에 유형을 추가 할 때 parsley의 오류 부트 스트랩이 그대로 남아 있습니다. "log"메서드를 찾지 못했습니다. logEvent를 의미합니까? – Frank

+0

어, 파슬리 로깅을 켭니다. errormessages 중 하나는 "알 수없는 클래스"입니다. 내 클래스 "SocketTarget"에는 패키지 이름 com.mydomain.components가 있으며 이름은 SocketTarget입니다.파슬리 구성의 시크릿 라인은 무엇입니까? Frank

+0

연결하지 않고 '테스트'할 수 없습니다. 게다가 거기에 넣은 코드에서 TraceTarget가 아니라 AbstractTarget을 확장 할 수 있습니다. 세 번째로, 다음과 같이 설정에서 타겟을 지정하기 만하면됩니다 :''. [내 블로그에 비슷한 내용을 올렸습니다.] (http://www.michelboudreau.com/2010/07/13/firebugloggertarget-class/). –