flexでログを出力する。for firebug

Firebugのコンソール出力にログデータを出力する。

まずは、コード
  1. package com.taktod.library.log {
  2. import flash.external.ExternalInterface;
  3.  
  4. import mx.core.mx_internal;
  5. import mx.logging.LogEvent;
  6. import mx.logging.LogEventLevel;
  7. import mx.logging.targets.LineFormattedTarget;
  8.  
  9. use namespace mx_internal;
  10.  
  11. /**
  12. * FireFoxのコンソール出力するロガーターゲット
  13. * @author taktod
  14. * http://iamjosh.wordpress.com/2007/12/21/flex-in-application-logging/
  15. */
  16. public class ConsoleTarget extends LineFormattedTarget{
  17. /**
  18. * コンストラクター
  19. */
  20. public function ConsoleTarget(level:int = LogEventLevel.ERROR) {
  21. super();
  22. this.level = level;
  23. }
  24. /**
  25. * ログ動作イベント
  26. */
  27. override public function logEvent(event:LogEvent):void {
  28. switch(event.level) {
  29. case LogEventLevel.FATAL:
  30. event.message = "FATAL:" + event.message;
  31. break;
  32. case LogEventLevel.ERROR:
  33. event.message = "ERROR:" + event.message;
  34. break;
  35. case LogEventLevel.INFO:
  36. event.message = "INFO:" + event.message;
  37. break;
  38. case LogEventLevel.WARN:
  39. event.message = "WARN:" + event.message;
  40. break;
  41. case LogEventLevel.DEBUG:
  42. event.message = "DEBUG:" + event.message;
  43. break;
  44. default:
  45. break;
  46. }
  47. super.logEvent(event);
  48. }
  49. /**
  50. * ログ書き込み動作
  51. */
  52. override mx_internal function internalLog(message:String):void {
  53. ExternalInterface.call("console.log", message);
  54. }
  55. }
  56. }
  57.  

イベントに割り込んで出力の部分にも割り込みをいれました。
ソースコード上の行数とかもいれたかったのですが、DebugPlayerでないと動作しないようなので、今回は見送りました。
実装するとしたら、Logクラスを継承したクラスを作成して、debugやinfoにError→stacktrace情報取得をいれればできるかなと思います。

上記のコードの使い方は
  1. var log:ILogger = Log.getLogger("com.taktod");
  2. Log.addTarget(new ConsoleTarget(LogEventLevel.INFO));
  3. log.info("test");
  4.  
こんな感じです。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年01月01日 21:10
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。