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
