Listening to Karen O & The Kids ♪ All is love - YouTube
26
Feb 2009
on 10:14 AM

as3로 만든 디버깅용 로그분석기.

예전에 만들었었는데 나름 유용한 프로그램입니다.
게을러서 이제야 공개하네요..

원리는 간단한데 LocalConnection 을 이용해서 플래쉬간 통신으로 웹사이트에 올라간 swf의 로그를 실시간으로 볼수있도록 작업한것입니다.

LogServer

/**
* ...
* @author jucina
* @version 0.1
*/

package com.view{
	import com.log.LogServer;
	import com.events.LogEvent;
	import fl.controls.Button;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.events.TextEvent;
	import fl.controls.TextArea;
    import fl.events.ComponentEvent;
	import fl.controls.ScrollBarDirection;
	import flash.display.Stage;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.text.TextFormat;

	public class LogWindow extends Sprite  {
		private var logServer	:LogServer	= new LogServer("jucina");
		//임의로 id를 jucina로 설정되어 있다. 원하는 id로 ClientWindow와 함께 수정하여야 한다.
		//ClientWindow는 테스트 파일이므로 사용하고자 하는 곳에서 선언해서 사용한다.
		//ex) private var _log	:LogClient 	= new LogClient("jucina");

		private var outPannel	:TextArea 	= new TextArea();
		private var clearButton	:Button 	= new Button();
		private var logFormat	:TextFormat = new TextFormat();
		public function LogWindow(){
			init();
		}
		private function init():void
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.addEventListener(Event.RESIZE, resizeHandler);

			outPannel.setSize(stage.stageWidth-20, stage.stageHeight-40);
			outPannel.move(10, 10);
			outPannel.editable = false;

			clearButton.label="clear";
			clearButton.move(10, stage.stageHeight-30);
			clearButton.addEventListener(MouseEvent.CLICK, clearHandler);

			addChild(outPannel);
			addChild(clearButton);
			logServer.addEventListener(LogEvent.OUTPUT, outHandler);
		}
		private function outHandler(e:LogEvent){
			outPannel.appendText(e.param);
			outPannel.verticalScrollPosition = outPannel.maxVerticalScrollPosition;
		}
		private function clearHandler(e:MouseEvent){
			outPannel.text = "";
		}
		private function resizeHandler(e:Event){
			outPannel.setSize(stage.stageWidth-20, stage.stageHeight-40);
			outPannel.move(10, 10);
			clearButton.move(10, stage.stageHeight-30);
			outPannel.verticalScrollPosition = outPannel.maxVerticalScrollPosition;
		}
	}

}


LogClient for test

/**
* ...
* @author Jucina
* @version 0.1
*/

package com.view{
	import com.log.LogClient;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.utils.Timer;

	public class ClientWindow extends Sprite {
		private var _log			:LogClient 	= new LogClient("jucina");
		//임의로 id를 jucina로 설정되어 있다. 원하는 id로 LogServer에서 입력 하여야 한다.

		private var _timer			:Timer 		= new Timer(1000, 10);
		private var restartButton	:Button 	= new Button();
		public function ClientWindow()
		{
			_log.send("ClientWindow start");
			_timer.addEventListener(TimerEvent.TIMER, sendMsg);
			_timer.start();
			_log.send("-------------timer start");
		}
		private function buttonSet():void
		{
			restartButton.label="restart";
			restartButton.move(3, 3);
			restartButton.addEventListener(MouseEvent.CLICK, clearHandler);
		}
		private function clearHandler(e:MouseEvent):void
		{
			_log.send("-------------timer restart");
			_timer.reset();
			_timer.start();
		}
		private function sendMsg(e:TimerEvent)
		{
			_log.send("Count is :", _timer.currentCount);
			if (_timer.currentCount == _timer.repeatCount)_log.send("-------------timer end");
		}
	}
}

테스트 해보면 logWindow.swf에 보낸값들이 전송됨을 알수 있습니다.
logWindow.swf를 exe파일로 만들어서 사용하면 편합니다.
실서버에 프로그램을 올린후 에러가 났을때 디버깅하기에 좋습니다.
그냥 logWindow.exe(swf)를 열고 작업한사이트를 열면 로그들이 주르륵…
Download logserver

RSS Feed | Leave a comment | Trackback URL

Leave Your Comment