<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WS-Blog &#187; ThunderBolt</title>
	<atom:link href="http://www.websector.de/blog/category/thunderbolt/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.websector.de/blog</link>
	<description>// Flex, AIR, Flash</description>
	<lastBuildDate>Wed, 16 Jun 2010 09:25:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>ThunderBolt AS3 version 2.2 out now!</title>
		<link>http://www.websector.de/blog/2009/03/08/thunderbolt-as3-version-22-out-now/</link>
		<comments>http://www.websector.de/blog/2009/03/08/thunderbolt-as3-version-22-out-now/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 16:33:31 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/?p=262</guid>
		<description><![CDATA[ThunderBolt AS3, which is a lightweight logger extension for Flex 3-4, AIR and Flash 9-10 applications, has been updated to version 2.2. Check out the new features: New features Logging of package names + class names + code line numbers (Flash Debug Player required). ThunderBoltTarget for using Flex Logging API improved. SWC updated for using [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/flash-thunderbolt/" class="img"><img src="http://www.websector.de/blog/wp-content/uploads/2009/03/08/ThunderBoltAS3_teaser.png" width="500" height="90" /></a></p>
<p><a href="http://code.google.com/p/flash-thunderbolt/">ThunderBolt AS3</a>, which is a lightweight logger extension for Flex 3-4, AIR and Flash 9-10 applications, has been updated to version 2.2. </p>
<p>Check out the <a href="http://www.websector.de/blog/2009/03/08/thunderbolt-as3-version-22-out-now">new features</a>:</p>
<p><span id="more-262"></span></p>
<h2>New features</h2>
<ol>
<li>Logging of package names + class names + code line numbers (Flash Debug Player required).
<p><img src="http://www.websector.de/blog/wp-content/uploads/2009/03/08/thunderbolt_codelinenumbers.png" width="494" height="296" /></p>
</li>
<li><a href="http://code.google.com/p/flash-thunderbolt/source/browse/trunk/as3/source/org/osflash/thunderbolt/ThunderBoltTarget.as">ThunderBoltTarget</a> for using <a href="http://livedocs.adobe.com/flex/3/html/logging_09.html">Flex Logging API</a> improved.</li>
<li><a href="http://code.google.com/p/flash-thunderbolt/source/browse/#svn/trunk/as3/libs">SWC</a> updated for using Flex 4 (<a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo">Gumbo</a>)</li>
<li><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a> uses a certificate of <a href="http://www.thawte.com/">Thawte</a> sponsored by <a href="http://www.adobe.com/">Adobe</a>.
<p><img src="http://www.websector.de/blog/wp-content/uploads/2009/03/08/thunderbolt_certificate.png" width="500" height="410" /></p>
</li>
<li><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a> is updated using latest version of <a href="http://get.adobe.com/air/">Adobe AIR v.1.5.1</a></li>
<li><a href="http://code.google.com/p/flash-thunderbolt/issues/detail?id=10">Issue 10</a> fixed: &#8220;<a href="http://code.google.com/p/flash-thunderbolt/issues/detail?id=10">Command + Q not working in OS X</a>&#8220;</li>
<li>All <a href="http://code.google.com/p/flash-thunderbolt/downloads/list">examples</a> and <a href="http://code.google.com/p/flash-thunderbolt/w/list">documentation</a> has been updated as well.</li>
</ol>
<p>Happy Logging <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>-Jens</p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2009/03/08/thunderbolt-as3-version-22-out-now/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ThunderBolt AS3 supports Flex 4 (Gumbo)</title>
		<link>http://www.websector.de/blog/2008/08/03/thunderbolt-as3-supports-flex-4-gumbo/</link>
		<comments>http://www.websector.de/blog/2008/08/03/thunderbolt-as3-supports-flex-4-gumbo/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 17:19:40 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2008/08/03/thunderbolt-as3-supports-flex-4-gumbo/</guid>
		<description><![CDATA[ThunderBolt AS3 version 2.0 is out now! ThunderBolt AS3 is a lightweight logger extension for logging any ActionScript 3.0 projects based on Flex 2-4, AIR or Flash 9-10 using Firebug or the new ThunderBolt AS3 Console. After a public beta phase of two months and about 500-1.000 beta testers (1.240 downloads) the doors are open [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3</a> version 2.0 is out now! ThunderBolt AS3 is a lightweight logger extension for logging any ActionScript 3.0 projects based on Flex 2-4, AIR or Flash 9-10 using <a href="http://getfirebug.com/">Firebug</a> or the new <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a>.</p>
<p>After a public beta phase of two months and about 500-1.000 beta testers (1.240 downloads) the doors are open for the new release 2.0. Thanks to all the participants!</p>
<p>One of the <a href="http://code.google.com/p/flash-thunderbolt/">new features</a> is the support and <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo">Flex 4 (Gumbo)</a>. Check out the following example. Note: <a href="http://labs.adobe.com/downloads/flashplayer10.html">Flash Player 10 beta</a> will be required.</p>
<p><span id="more-54"></span></p>
<h2>Example</h2>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltGumbo_588225130"
			class="flashmovie"
			width="500"
			height="150">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2008/08/03/ThunderBoltGumbo.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#FFFFFF" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2008/08/03/ThunderBoltGumbo.swf"
			name="fm_ThunderBoltGumbo_588225130"
			width="500"
			height="150">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#FFFFFF" />
	<!--<![endif]-->
		
<p><a class="img" href="http://labs.adobe.com/downloads/flashplayer10.html"><img src="http://www.websector.de/blog/wp-content/uploads/2008/08/03/updateFlash10.png" alt="" width="500" height="150" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<h2>Instruction</h2>
<ol>
<li>For using <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4/">Flex 4 SDK beta</a> and Flex Builder 3 follow  <a href="http://blog.flexexamples.com/2008/08/02/using-the-beta-gumbo-sdk-in-flex-builder-3/">the instructions</a> published by Peter deHaan (<a href="http://blog.flexexamples.com/">blog.flexexamples.com</a>).</li>
<li>Grab <code>ThunderBoltAS3_Gumbo.swc</code> for using ThunderBolt AS3 within your Gumbo project. You will find the SWC within <code>ThunderBoltAS3_v2.0.zip</code>, which <a href="http://code.google.com/p/flash-thunderbolt/downloads/list">is available at Google Code</a>. Add the SWC to your <code>lib</code> folder at your project.</li>
<li>Log your project using ThunderBolt AS3 as usual or as described on its Wiki page at Google Code</li>
</ol>
<h2>Full source</h2>
<p>To download full source of the example above just jump to <a href="http://code.google.com/p/flash-thunderbolt/downloads/list">ThunderBolt AS3 download list at Google Code</a> and grab the latest <code>ThunderBoltAS3_v2.0.zip</code>. Within this *.zip you will find a folder <code>examples/flex/gumbo</code>.</p>
<p>Happy logging with Gumbo <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2008/08/03/thunderbolt-as3-supports-flex-4-gumbo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>10 tips and tricks using ThunderBolt AS3</title>
		<link>http://www.websector.de/blog/2008/06/15/10-tips-and-tricks-using-thunderbolt-as3/</link>
		<comments>http://www.websector.de/blog/2008/06/15/10-tips-and-tricks-using-thunderbolt-as3/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 10:02:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Almost one year ago I started to develop a small extension called ThunderBolt AS3 for logging ActionScript 3 applications using Firebug as simple as possible. Today its nice to see that the community uses and supports this extension as well. For all those who not familiar with it: ThunderBolt AS3 is a lightweight logger extension [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/">Almost one year ago</a> I started to develop a small extension called <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3</a> for logging ActionScript 3 applications using <a href="http://www.getfirebug.com/">Firebug</a> as simple as possible. Today its nice to see that the community <a href="http://www.flashcomguru.com/index.cfm/2008/6/6/thunderbolt-air">uses</a> <a href="http://www.flex888.com/2008/06/14/debugging-flex-with-thunderbolt.html">and</a> <a href="http://blog.digitalbackcountry.com/?p=1452">supports</a> this extension as well.</p>
<p>For all those who not familiar with it: <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3</a> is a lightweight logger extension for any ActionScript 3 applications based on <a href="http://www.adobe.com/products/flash/">Flash CS3</a>, <a href="http://www.adobe.com/products/flex/">Flex</a> or <a href="http://www.adobe.com/products/air/">Adobe AIR</a> using <a href="http://www.getfirebug.com/">Firebug</a> or its own <a href="http://www.websector.de/blog/2008/06/01/the-new-thunderbolt-as3-console-is-based-on-adobe-air/">ThunderBolt AS3 Console</a>.</p>
<p>Here are some tips and tricks using ThunderBolt AS3:</p>
<p><span id="more-51"></span></p>
<ol>
<li>
<h2>Using different log levels</h2>
<p>ThunderBolt AS3 supports different log levels, which based on the supported levels by Firebug, such as &#8220;info&#8221;, &#8220;warn&#8221;, &#8220;error&#8221; or &#8220;debug&#8221;. It&#8217;s pretty simple to use it:</p>
<phpcode>
<div class="codeHeadlineBox">
<p>log level example ( <a href="http://www.websector.de/blog/wp-content/uploads/2008/06/15/loglevels.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">Logger</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// some log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myNumber: <span class="kw3">int</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myString: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// INFO log level</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">info</span> <span class="br0">&#40;</span><span class="st0">&quot;Just an info message&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// DEBUG log level</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">debug</span> <span class="br0">&#40;</span><span class="st0">&quot;A debug log &quot;</span>, myString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// WARN log level</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">warn</span> <span class="br0">&#40;</span><span class="st0">&quot;A warn message&quot;</span>, myNumber<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// ERROR log level</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="kw3">error</span> <span class="br0">&#40;</span><span class="st0">&quot;An error log &quot;</span>, myString<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
</phpcode>
<p><strong>Screen shot using Firebug:</strong><br />
			<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/loglevels.png" width="498" height="224" />
			</p>
<p><strong>Screen shot using ThunderBolt AS3 Console:</strong><br />
				<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/loglevels2.png" width="498" height="356" />
				</p>
</li>
<li>
<h2>Logging one or more objects at once</h2>
<p>ThunderBolt AS3 logs more than one objects at once. It could be primitive types (<code>int</code>, <code>uint</code>, <code>Number</code>, <code>Boolean</code>, &#8230;) or more complex data such as an instance of any classes or nested objects. Here an example:</p>
<phpcode>
<div class="codeHeadlineBox">
<p>Example for logging few objects at once ( <a href="http://www.websector.de/blog/wp-content/uploads/2008/06/15/objects.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">Logger</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// some log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myNumber: <span class="kw3">int</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myString: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myObject: <span class="kw3">Object</span> = <span class="br0">&#123;</span>&nbsp; &nbsp; exampleArray: <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y: <span class="nu0">10</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exampleString: <span class="st0">&quot;Hello&quot;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nestedObject: <span class="br0">&#123;</span>&nbsp;x: <span class="nu0">100</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y: <span class="nu0">200</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Logging an object with nested items</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">info</span> <span class="br0">&#40;</span><span class="st0">&quot;Logging an object with nested items &quot;</span>, myObject<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Logging more objects at once</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">info</span> <span class="br0">&#40;</span><span class="st0">&quot;Logging more objects at once &quot;</span>, myString, myNumber, myObject<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
</phpcode>
<p><strong>Screen shot using Firebug:</strong><br />
				<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/objects.png" width="498" height="224" />
				</p>
<p><strong>Screen shot using ThunderBolt AS3 Console:</strong><br />
					<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/objects2.png" width="498" height="356" />
					</p>
</li>
<li>
<h2>Using the Flex Logging API</h2>
<p>ThunderBolt AS3 supports the <a href="http://livedocs.adobe.com/flex/3/html/logging_09.html#178687">Flex Logging API</a> using its own log target called <code>ThunderBoltTarget</code>. To use it you will need to use and import the <a href="http://code.google.com/p/flash-thunderbolt/source/browse/trunk/as3/source/org/osflash/thunderbolt/ThunderBoltTarget.as">ThunderBoltTarget.as</a> as well:</p>
<phpcode>
<div class="codeHeadlineBox">
<p>Example for using Flex logging API ( <a href="http://www.websector.de/blog/wp-content/uploads/2008/06/15/flexapi.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">import</span> mx.<span class="me1">logging</span>.<span class="kw3">Log</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">ThunderBoltTarget</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// init ThunderBoltTarget</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span> = <span class="kw2">new</span> ThunderBoltTarget<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> You can disable the time, level or category as well&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> _target.includeTime = false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> _target.includeLevel = false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> _target.includeCategory = false;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span>&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span>.<span class="me1">filters</span> = <span class="br0">&#91;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Log</span>.<span class="me1">addTarget</span><span class="br0">&#40;</span><span class="kw3">_target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// start logging</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="me1">info</span><span class="br0">&#40;</span><span class="st0">&quot;Just an info message.&quot;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
</phpcode>
<p><strong>Screen shot using Firebug:</strong><br />
			<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/flexapi.png" width="498" height="150" />
			</p>
<p><strong>Screen shot using ThunderBolt AS3 Console:</strong><br />
				<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/flexapi2.png" width="498" height="234" />
				</p>
</li>
<li>
<h2>Stop and hide logging</h2>
<p>To release your project you might to disable all logging data. Then put the following line into your code.</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">Logger.<span class="kw3">hide</span> = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<h2>Show a memory snapshot</h2>
<p>Make a memory snapshot whenever you want:</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">Logger.<span class="me1">memorySnapshot</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<h2>Show or hide a time stamp</h2>
<p>Lets make a time stamp. The default value is &#8220;true&#8221;. To hide the time stamp use this:</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">Logger.<span class="me1">includeTime</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<h2>Using the new ThunderBolt AS3 <strike>v.2.1beta</strike> v.2.0 and its Console</h2>
<p><a href="http://code.google.com/p/flash-thunderbolt/downloads/list">The new version of ThunderBolt AS3</a> (<strike>v.2.1beta</strike> v.2.0) detects either Firebug is installed or not. If not, then it uses the well known <code>trace()</code> method to log all data into &#8220;flashlog.txt&#8221;. You can enforce this process using:</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">Logger.<span class="me1">console</span> = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode>
<p>To show all information in a well defined structure I&#8217;d recommend to use the new <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a>. It&#8217;s a handy tool to log any AIR application as well <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
</li>
<li>
<h2>Using the ThunderBolt AS3 Console for logging ActionScript 1 or 2 projects</h2>
<p>As described above <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a> follows a simple principle: It reads just all information logged by the ThunderBolt AS3 Logger (<strike>v.2.1beta</strike> v.2.0) into &#8220;flashlog.txt&#8221; and shows it in a hierarchal order based on different log levels. </p>
<p>That means you can use ThunderBolt AS3 Console for logging any AS 1 or 2 projects too <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . Just call a <code>trace()</code> method as follows. Note the prefixes named &#8220;info&#8221;, &#8220;error&#8221;, &#8220;warn&#8221; or &#8220;debug&#8221; followed by a whitespace at the beginning:</p>
<phpcode>
<div class="codeHeadlineBox">
<p>trace() example for using ThunderBolt AS3 Console ( <a href="http://www.websector.de/blog/wp-content/uploads/2008/06/15/trace.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// tracing an info log level</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;info Here is an info message to display using ThunderBolt AS3 Console&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// tracing an error log level</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myString: <span class="kw3">String</span> = <span class="st0">&quot;hello console&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;error Here is an error message&quot;</span> + myString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// tracing an debug log level</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;debug Here is a debug message&quot;</span> + myString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// tracing a warn log level</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;warn Here is a warn message&quot;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
</phpcode>
<p><strong>Screen shot using ThunderBolt AS3 Console:</strong><br />
				<img src="http://www.websector.de/blog/wp-content/uploads/2008/06/15/trace.png" width="498" height="294" />
				</p>
</li>
<li>
<h2>Any issues with the Flash Player security sandbox using Firebug?</h2>
<p>If you have any security issues with the Flash Player security sandbox using ThunderBolt AS3 and Firebug set within your HTML template the value of the parameter named &#8220;allowScriptAccess&#8221; to &#8220;always&#8221;. For more information check Adobes Flex 3 Help: <a href="http://livedocs.adobe.com/flex/3/html/passingarguments_6.html">&#8220;About ExternalInterface API security in Flex&#8221;</a></p>
</li>
<li>
<h2>Issues using ThunderBolt AS3 Console on Windows?</h2>
<p>What a pretty sh&#8230;y thing: The ThunderBolt AS3 Console is currently available for OS X only. There are some issues using an opened AIR app and &#8220;flashlog.txt&#8221; at the same time on Windows. Check out <a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=75&#038;catid=697&amp;threadid=1368880">this entry at Adobes AIR forum</a> for more information. Hoping that Adobe will fix this issue in the future. So long, sorry for all the Windows user out there <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  . </p>
<p>BTW: Feel free to post <a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=75&#038;catid=697&amp;threadid=1368880">here</a> your request to Adobes AIR team as well <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
</li>
</ol>
<h2>Open source!</h2>
<p>ThunderBolt AS3 and its console is open source! <a href="http://code.google.com/p/flash-thunderbolt/source/checkout">Grab the source</a>, change and adapt it. Or do whatever you want <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p>Happy logging! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2008/06/15/10-tips-and-tricks-using-thunderbolt-as3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The new ThunderBolt AS3 Console based on Adobe AIR</title>
		<link>http://www.websector.de/blog/2008/06/01/the-new-thunderbolt-as3-console-based-on-adobe-air/</link>
		<comments>http://www.websector.de/blog/2008/06/01/the-new-thunderbolt-as3-console-based-on-adobe-air/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 17:23:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2008/06/01/the-new-thunderbolt-as3-console-based-on-adobe-air/</guid>
		<description><![CDATA[ThunderBolt AS3 is a lightweight logger extension for Flex or Flash application using Firebug. With its new tool called ThunderBolt AS3 Console, which based on Adobe AIR, it&#8217;s independent on Firebug. That&#8217;s incredible helpful for logging AIR applications using ThunderBolt AS3. Screen shots 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ws-slideshow_299793737"
			class="flashmovie"
			width="500"
			height="400">
	<param name="movie" value="http://www.websector.de/blog/wp-includes/swf/ws-slideshow.swf" />
	<param name="flashvars" value="XMLPath=http://www.websector.de/blog/wp-content/uploads/2008/06/01/screenshots.xml&amp;langID=EN" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#FFFFFF" />
	<param name="allowscriptaccess" value="sameDomain" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-includes/swf/ws-slideshow.swf"
			name="fm_ws-slideshow_299793737"
			width="500"
			height="400">
		<param name="flashvars" value="XMLPath=http://www.websector.de/blog/wp-content/uploads/2008/06/01/screenshots.xml&amp;langID=EN" />
		<param name="menu" value="false" />
		<param name="bgcolor" value="#FFFFFF" />
		<param name="allowscriptaccess" value="sameDomain" />
		<param name="allowfullscreen" value="true" />
	<!--<![endif]-->
		 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3</a> is a lightweight logger extension for Flex or Flash application using <a href="http://www.firebug.org">Firebug</a>. With its new tool called <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a>, which based on <a href="http://www.adobe.com/products/air/">Adobe AIR</a>, it&#8217;s independent on Firebug. That&#8217;s incredible helpful for logging AIR applications using ThunderBolt AS3.</p>
<p><span id="more-50"></span></p>
<h2>Screen shots</h2>
<p>[kml_flashembed publishmethod="dynamic" fversion="9.0.28" movie="http://www.websector.de/blog/wp-includes/swf/ws-slideshow.swf" width="500" height="400" targetclass="flashmovie" menu="false" bgcolor="#FFFFFF" allowfullscreen="true" allowscriptaccess="sameDomain" fvars="XMLPath=http://www.websector.de/blog/wp-content/uploads/2008/06/01/screenshots.xml;langID=EN"]</a><br />

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><!-- #START screenshots --></p>
<h2>Behind the scenes</h2>
<p>For logging without Firebug, ThunderBolt AS3 uses the well-known <code>trace()</code> method in a special manner, which are stored in the <a href="http://livedocs.adobe.com/flex/3/html/logging_04.html">flashlog.txt</a>. ThunderBolt AS3 Console reads this file and displays all information using different log views in a same way as Firebug it does.</p>
<p>The architecture behind this AIR application based on <a href="http://www.tombray.com/category/easymvc/">Tom Bray&#8217;s easyMVC concept</a>, which helps to build a well structured application as quick as possible using the MVC pattern.</p>
<p>ThunderBolt AS3 Console uses the following libraries as well:</p>
<ul>
<li><a href="http://developer.yahoo.com/yui/treeview/">Yahoo! UI Library TreeView</a> for the logging tree. It&#8217;s great to use this library within <a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HTML.html">the AIR based HTML component</a> for manipulating the HTML DOM using pure ActionScript <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</li>
<li>The awesome <a href="http://www.degrafa.com/">Degrafa</a> library for all the skinning stuff.</li>
</ul>
<h2>Full source available</h2>
<p>Download the <a href="http://code.google.com/p/flash-thunderbolt/downloads/list">ThunderBolt AS3 Console at Google Code</a> or check out the full source using <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3console/">its repository</a>.</p>
<h2>Wiki pages at Google Code</h2>
<ul>
<li><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3 project page</a></li>
<li><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3Console">ThunderBolt AS3 Console</a></li>
</ul>
<p>Happy logging! <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2008/06/01/the-new-thunderbolt-as3-console-based-on-adobe-air/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>ThunderBolt AS3 1.0 released &#8211; A lightweight logging tool for Flex 2 and Flash CS3 applications</title>
		<link>http://www.websector.de/blog/2007/10/14/thunderbolt-as3-10-released-a-lightweight-logging-tool-for-flex-2-and-flash-cs3-applications/</link>
		<comments>http://www.websector.de/blog/2007/10/14/thunderbolt-as3-10-released-a-lightweight-logging-tool-for-flex-2-and-flash-cs3-applications/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 09:51:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2007/10/14/thunderbolt-as3-10-released-a-lightweight-logging-tool-for-flex-2-and-flash-cs3-applications/</guid>
		<description><![CDATA[ThunderBolt AS3 is a lightweight logging tool for Flex 2 and Flash CS3 applications using Firebug as its logging console. It&#8217;s open source based on the Mozilla Public License 1.1. Features based on ThunderBolt AS3 v.1.0 Log levels: INFO, WARN, ERROR, DEBUG (FATAL, ALL) Tree view for complex object structures such as class identifier and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">ThunderBolt AS3</a> is a lightweight logging tool for Flex 2 and Flash CS3 applications using <a href="http://www.getfirebug.com/">Firebug</a> as its logging console. It&#8217;s open source based on the <a href="http://www.mozilla.org/MPL/MPL-1.1.html">Mozilla Public License 1.1.</a></p>
<p><span id="more-40"></span></p>
<h2>Features based on ThunderBolt AS3 v.1.0</h2>
<ul>
<li>Log levels: INFO, WARN, ERROR, DEBUG (FATAL, ALL)</li>
<li>Tree view for complex object structures such as class identifier and its properties</li>
<li>Custom LogTarget based on Flex Logging API including filters</li>
<li>Memory snapshot</li>
<li>SWC components for logging using Flex 2 or Flash CS3. Only 4kB for the Flash based SWC and 24kB for Flex one using the Flex 2 Logging Framework.</li>
</ul>
<p>For more information check the <a href="http://code.google.com/p/flash-thunderbolt/wiki/ThunderBoltAS3">Wiki</a> on <a href="http://code.google.com/p/flash-thunderbolt/">Google Code</a>.</p>
<h2>Live examples</h2>
<p><strong>Note:</strong> Press F12 to open Firebug within Firefox to receive all logging messages.<br />Any questions&#8230;? What the fuck is <a href="http://www.getfirebug.com/">Firebug</a>&#8230;? <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Pure Flex 2 example:</strong></p>
<p><!-- #START example 2 --></p>
<div width="500" height="150">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltFlexExample_826039304"
			class="flashmovie"
			width="500"
			height="150">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/10/14/ThunderBoltFlexExample.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#FFFFFF" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/10/14/ThunderBoltFlexExample.swf"
			name="fm_ThunderBoltFlexExample_826039304"
			width="500"
			height="150">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#FFFFFF" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<p><!-- #END example 2 --></p>
<p><strong>Flex 2 example using the Flex 2 Logging Framework:</strong></p>
<p><!-- #START example 2 -->
<div width="500" height="150">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltTargetExample_1161682228"
			class="flashmovie"
			width="500"
			height="150">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/10/14/ThunderBoltTargetExample.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#FFFFFF" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/10/14/ThunderBoltTargetExample.swf"
			name="fm_ThunderBoltTargetExample_1161682228"
			width="500"
			height="150">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#FFFFFF" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<p><!-- #END example 2 --></p>
<p><strong>Pure Flash CS3 example:</strong></p>
<p><!-- #START example 3 --></p>
<div width="500" height="200">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_flashThunderBoltAS3Example_1066562787"
			class="flashmovie"
			width="500"
			height="200">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/10/14/flashThunderBoltAS3Example.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#FFFFFF" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/10/14/flashThunderBoltAS3Example.swf"
			name="fm_flashThunderBoltAS3Example_1066562787"
			width="500"
			height="200">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#FFFFFF" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<p><!-- #END example 3 --></p>
<h2>Free download</h2>
<p>Full source of ThunderBolt AS3 including all examples and libraries as SWC&#8217;s:  <br /><a href="http://www.websector.de/blog/?download=ExamplesThunderBoltAS3.zip">ThunderBoltAS3_v1.0.zip</a><br />(Downloads: 1470)</p>
<p>Happy logging <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2007/10/14/thunderbolt-as3-10-released-a-lightweight-logging-tool-for-flex-2-and-flash-cs3-applications/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>[Update - Part 2] Logging Flex 2 and AS3 applications with Firebug and ThunderBolt</title>
		<link>http://www.websector.de/blog/2007/06/20/update-part-2-logging-flex-2-and-as3-applications-with-firebug-and-thunderbolt/</link>
		<comments>http://www.websector.de/blog/2007/06/20/update-part-2-logging-flex-2-and-as3-applications-with-firebug-and-thunderbolt/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 17:51:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2007/06/20/update-part-2-logging-flex-2-and-as3-applications-with-firebug-and-thunderbolt/</guid>
		<description><![CDATA[This is the second part about the latest update of ThunderBolt AS3. ThunderBolt AS3 is an open source logger extension for Flex 2 or Flash ActionScript 3 applications using Firebug within Firefox. In part 1 I described a way for using ThunderBolt AS3 with the Flex 2 Logging Framework using an own log target called [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second part about the latest update of <a href="http://code.google.com/p/flash-thunderbolt/">ThunderBolt AS3</a>. ThunderBolt AS3 is an open source logger extension for Flex 2 or Flash ActionScript 3 applications using <a href="http://www.getfirebug.com">Firebug</a> within <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a>.</p>
<p><span id="more-29"></span></p>
<p>In <a href="http://www.websector.de/blog/2007/06/17/update-part-1-logging-flex-2-applications-with-firebug-and-thunderbolt-using-the-flex-2-logging-framework/">part 1</a> I described a way for using ThunderBolt AS3 with the Flex 2 Logging Framework using an own log target called <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/source/org/osflash/thunderbolt/ThunderBoltTarget.as">ThunderBoltTarget</a>. This is a handy extension, but it has a disadvantage: The Flex 2 Logging Framework doesn&#8217;t support outputs of nested objects because the <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/Log.html">original Flex 2 Log instance</a> uses an instance of the <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/LogLogger.html">LogLogger</a> which dispatches only a message of the logged object typed as String.</p>
<p>For this issue is better to use the ThunderBolt <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/source/org/osflash/thunderbolt/Logger.as">Logger instance</a> directly for logging objects and its nested objects including all properties <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . With the latest release I have added a common way for using log levels as well. Check out the the following instructions.</p>
<h2>Example</h2>
<div width="500" height="220">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltAS3Example_1477474349"
			class="flashmovie"
			width="100%"
			height="220">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/06/21/ThunderBoltAS3Example.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#003366" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/06/21/ThunderBoltAS3Example.swf"
			name="fm_ThunderBoltAS3Example_1477474349"
			width="100%"
			height="220">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#003366" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<h2>Screen Shot: Logging to Firebug</h2>
<p><img src="http://www.websector.de/blog/wp-content/uploads/2007/06/21/firebugScreen.png" width="500" height="340" /></p>
<h2>Instructions</h2>
<p>
<ol>
<li>Grab the latest ThunderBolt AS3 package (includes two classes only) from its repository<a href="http://code.google.com/p/flash-thunderbolt/source"> via SVN</a> on Google Code or download it <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/source/org/osflash/thunderbolt/">directly</a>. Make sure that you have installed <a href="http://www.getfirebug.com">Firebug</a> as well.</li>
<li>
<p>For logging to Firebug call the ThunderBolt Logger class methods such as info, warn, error, debug. You don&#8217;t need to create an instance of Logger because all of its public methods and public properties are static.</p>
<phpcode>
<div class="codeHeadlineBox">
<p>Code examples using ThunderBolt</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// import ThunderBolt Logger</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">Logger</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// log a string as an info message</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myString: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">info</span> <span class="br0">&#40;</span><span class="st0">&quot;A simple string&quot;</span>, myString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Log two objects (or more <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) as an error message</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myNumber: <span class="kw3">int</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myString2: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="kw3">error</span> <span class="br0">&#40;</span><span class="st0">&quot;Two log objects: A number typed as int and a string&quot;</span>, myNumber, myString2<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Log an array with a nested object as a warn message</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myArray: <span class="kw3">Array</span> = <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>,<span class="br0">&#123;</span>x: <span class="nu0">100</span>, y: <span class="nu0">200</span><span class="br0">&#125;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">warn</span> <span class="br0">&#40;</span><span class="st0">&quot;An array with a nested object: &quot;</span>, myArray<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Log an object with a nested array as a debug message</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> myObject: <span class="kw3">Object</span> = <span class="br0">&#123;</span>exampleArray: <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>, y: <span class="nu0">10</span>, exampleString: <span class="st0">&quot;Hello&quot;</span>, nestedObject: <span class="br0">&#123;</span>x: <span class="nu0">100</span>, y: <span class="nu0">200</span><span class="br0">&#125;</span><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">debug</span> <span class="br0">&#40;</span><span class="st0">&quot;An object with a nested object and nested array&quot;</span>, o<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Optionally you can hide the time stamp</span></div>
</li>
<li class="li1">
<div class="de1">Logger.<span class="me1">includeTime</span> = <span class="kw2">false</span>;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>That&#8217;s all &#8211; happy logging <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
</ol>
<h2>Source</h2>
<p>You will find the <a href="http://code.google.com/p/flash-thunderbolt/source">latest source</a> of the ThunderBolt AS 3 package on Google Code too. It&#8217;s open source and based on the <a href="http://www.mozilla.org/MPL/MPL-1.1.html">Mozilla Public License 1.1</a>.</p>
<p>
<phpcode>
<div class="codeHeadlineBox">
<p>ThunderBolts core class named &#8220;Logger.as&#8221; ( <a href="http://www.websector.de/blog/wp-content/uploads/2007/06/21/Logger.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* Logging Flex and AS3 projects with Firebug using ThunderBolt AS3</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @version&nbsp; 0.9.1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @author&nbsp; &nbsp;Jens Krause [www.websector.de]</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @date&nbsp;&nbsp;06/29/07</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @see&nbsp; &nbsp; http://www.websector.de/blog/?s=thunderbolt</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @see&nbsp; &nbsp; http://code.google.com/p/flash-thunderbolt/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @source&nbsp; &nbsp;http://flash-thunderbolt.googlecode.com/svn/trunk/as3/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* ***********************</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* HAPPY LOGGING <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* ***********************</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">package org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">external</span>.<span class="me1">ExternalInterface</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">describeType</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">getQualifiedClassName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">getDefinitionByName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> mx.<span class="me1">logging</span>.<span class="me1">LogEventLevel</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> mx.<span class="me1">logging</span>.<span class="me1">LogEvent</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; * Thunderbolts AS3 Logger class</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">public</span> <span class="kw2">class</span> Logger</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Firebug supports 4 log levels only</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const INFO: <span class="kw3">String</span> = <span class="st0">&quot;info&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const WARN: <span class="kw3">String</span> = <span class="st0">&quot;warn&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const <span class="kw3">ERROR</span>: <span class="kw3">String</span> = <span class="st0">&quot;error&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const <span class="kw3">LOG</span>: <span class="kw3">String</span> = <span class="st0">&quot;log&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const FIELD_SEPERATOR: <span class="kw3">String</span> = <span class="st0">&quot; :: &quot;</span>;&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw3">static</span> const MAX_DEPTH: <span class="kw3">int</span> = <span class="nu0">255</span>;&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> _stopLog: <span class="kw3">Boolean</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> depth: <span class="kw3">int</span>;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> logLevel: <span class="kw3">String</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">var</span> includeTime: <span class="kw3">Boolean</span> = <span class="kw2">true</span>;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs info messages including objects for calling Firebug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;log Message </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObjects&nbsp; &nbsp; &nbsp; &nbsp; log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> info <span class="br0">&#40;</span>msg: <span class="kw3">String</span> = <span class="kw2">null</span>, &#8230; <span class="me1">logObjects</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span><span class="br0">&#40;</span>LogEventLevel.<span class="me1">INFO</span>, msg, logObjects<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs warn messages including objects for calling Firebug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;log Message </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObjects&nbsp; &nbsp; &nbsp; &nbsp; log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> warn <span class="br0">&#40;</span>msg: <span class="kw3">String</span> = <span class="kw2">null</span>, &#8230; <span class="me1">logObjects</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span><span class="br0">&#40;</span>LogEventLevel.<span class="me1">WARN</span>, msg, logObjects<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs error messages including objects for calling Firebug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;log Message </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObjects&nbsp; &nbsp; &nbsp; &nbsp; log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> <span class="kw3">error</span> <span class="br0">&#40;</span>msg: <span class="kw3">String</span> = <span class="kw2">null</span>, &#8230; <span class="me1">logObjects</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span><span class="br0">&#40;</span>LogEventLevel.<span class="kw3">ERROR</span>, msg, logObjects<span class="br0">&#41;</span>;&nbsp;&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs debug messages messages including objects for calling Firebug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;log Message </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObjects&nbsp; &nbsp; &nbsp; &nbsp; log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> debug <span class="br0">&#40;</span>msg: <span class="kw3">String</span> = <span class="kw2">null</span>, &#8230; <span class="me1">logObjects</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span><span class="br0">&#40;</span>LogEventLevel.<span class="me1">DEBUG</span>, msg, logObjects<span class="br0">&#41;</span>;&nbsp;&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Calls Firebugs command line API to write log information</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;log Message </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObjects&nbsp; &nbsp; &nbsp; &nbsp; log objects</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> <span class="kw3">trace</span> <span class="br0">&#40;</span><span class="kw3">level</span>: <span class="kw3">Number</span> = <span class="nu0">0</span>, msg: <span class="kw3">String</span> = <span class="kw2">null</span>, &#8230; <span class="me1">logObjects</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;depth = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="co1">// get log level</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;logLevel = Logger.<span class="me1">getLogLevel</span><span class="br0">&#40;</span><span class="kw3">level</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="co1">// add log level to log messagef</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="kw2">var</span> logMsg: <span class="kw3">String</span> = <span class="st0">&quot;[&quot;</span> + logLevel.<span class="kw3">toUpperCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span> + <span class="st0">&quot;] &quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <span class="co1">// add time&nbsp;to log message</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>includeTime<span class="br0">&#41;</span> logMsg += getCurrentTime<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// add message text to log message</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;logMsg += <span class="br0">&#40;</span>msg != <span class="kw2">null</span> &amp;&amp; msg.<span class="kw3">length</span><span class="br0">&#41;</span> ? msg : <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="co1">// call Firebug&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + logLevel, logMsg<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="co1">// log objects&nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i:uint = <span class="nu0">0</span>; i &lt; logObjects.<span class="kw3">length</span>; i++<span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; Logger.<span class="me1">logObject</span><span class="br0">&#40;</span>logObjects<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Translates Flex log levels to Firebugs log levels</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; msg</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return &nbsp;level description</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> getLogLevel <span class="br0">&#40;</span>logLevel: <span class="kw3">Number</span><span class="br0">&#41;</span>: <span class="kw3">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">level</span>: <span class="kw3">String</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span>logLevel<span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> LogEventLevel.<span class="me1">INFO</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="me1">INFO</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> LogEventLevel.<span class="me1">WARN</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="me1">WARN</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> LogEventLevel.<span class="kw3">ERROR</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">ERROR</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Firebug doesn&#8217;t support a fatal level</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// so we use here Firebugs ERROR level when you&#8217;re using ThunderBoltTarget</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> LogEventLevel.<span class="me1">FATAL</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">ERROR</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// for LogEventLevel.DEBUG &amp;&amp; LogEventLevel.ALL </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// so we use here Firebugs LOG level when you&#8217;re using ThunderBoltTarget</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">LOG</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">level</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs nested instances and properties</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; logObj&nbsp; &nbsp; log object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; id&nbsp; &nbsp; &nbsp; &nbsp; short description of log object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> logObject <span class="br0">&#40;</span>logObj: *, id: <span class="kw3">String</span> = <span class="kw2">null</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>depth &lt; Logger.<span class="me1">MAX_DEPTH</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ++ depth;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> propID: <span class="kw3">String</span> = id || <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> description:<span class="kw3">XML</span> = describeType<span class="br0">&#40;</span>logObj<span class="br0">&#41;</span>;&nbsp;&nbsp;&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">type</span>: <span class="kw3">String</span> = description.@<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>primitiveType<span class="br0">&#40;</span><span class="kw3">type</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> msg: <span class="kw3">String</span> = <span class="br0">&#40;</span>propID.<span class="kw3">length</span><span class="br0">&#41;</span> &nbsp; ? &nbsp; &nbsp; <span class="st0">&quot;[&quot;</span> + <span class="kw3">type</span> + <span class="st0">&quot;] &quot;</span> + propID + <span class="st0">&quot; = &quot;</span> + logObj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : &nbsp; <span class="st0">&quot;[&quot;</span> + <span class="kw3">type</span> + <span class="st0">&quot;] &quot;</span> + logObj;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + Logger.<span class="kw3">LOG</span>, msg<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">type</span> == <span class="st0">&quot;Object&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.group&quot;</span>, <span class="st0">&quot;[Object] &quot;</span> + propID<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> element: <span class="kw3">String</span> <span class="kw1">in</span> logObj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; logObject<span class="br0">&#40;</span>logObj<span class="br0">&#91;</span>element<span class="br0">&#93;</span>, element<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.groupEnd&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">type</span> == <span class="st0">&quot;Array&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="coMULTI">/* don&#8217;t create a group on depth 1 when we are using the &#8230; (rest) parameter calling by Logger.trace() <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>depth &gt; <span class="nu0">1</span><span class="br0">&#41;</span> ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.group&quot;</span>, <span class="st0">&quot;[Array] &quot;</span> + propID<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i: <span class="kw3">int</span> = <span class="nu0">0</span>; i &lt; logObj.<span class="kw3">length</span>; i++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; logObject<span class="br0">&#40;</span>logObj<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.groupEnd&quot;</span><span class="br0">&#41;</span>;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// log private props as well &#8211; thx Rob Herman [http://www.toolsbydesign.com] <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">list</span>: XMLList = description..<span class="me1">accessor</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">list</span>.<span class="kw3">length</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> each<span class="br0">&#40;</span><span class="kw2">var</span> item: <span class="kw3">XML</span> <span class="kw1">in</span> <span class="kw3">list</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> propItem: <span class="kw3">String</span> = item.@<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> typeItem: <span class="kw3">String</span> = item.@<span class="kw3">type</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> access: <span class="kw3">String</span> = item.@access;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// log objects &amp;&amp; properties accessing &quot;readwrite&quot; and &quot;readonly&quot; only </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>access &amp;&amp; access != <span class="st0">&quot;writeonly&quot;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//TODO: filter classes</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// var classReference: Class = getDefinitionByName(typeItem) as Class;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> valueItem: * = logObj<span class="br0">&#91;</span>propItem<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logObject<span class="br0">&#40;</span>valueItem, propItem<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logObject<span class="br0">&#40;</span>logObj, <span class="kw3">type</span><span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// call one stop message only <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!_stopLog<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + Logger.<span class="me1">WARN</span>, <span class="st0">&quot;STOP LOGGING: More than &quot;</span> + depth + <span class="st0">&quot; nested objects or properties.&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _stopLog = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Checking for primitive types</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; type&nbsp; &nbsp; &nbsp; &nbsp; type of object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return &nbsp;isPrimitiveType &nbsp;isPrimitiveType</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> primitiveType <span class="br0">&#40;</span><span class="kw3">type</span>: <span class="kw3">String</span><span class="br0">&#41;</span>: <span class="kw3">Boolean</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> isPrimitiveType: <span class="kw3">Boolean</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span><span class="kw3">type</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;Boolean&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;void&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;int&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;uint&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;Number&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;String&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;undefined&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;null&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> isPrimitiveType;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Creates a valid time value</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; number&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;Hour, minute or second</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return &nbsp;string &nbsp; &nbsp; A valid hour, minute or second</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> getCurrentTime <span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> currentDate: <span class="kw3">Date</span> = <span class="kw2">new</span> <span class="kw3">Date</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> currentTime: <span class="kw3">String</span> = &nbsp; <span class="st0">&quot;time &quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeToValidString<span class="br0">&#40;</span>currentDate.<span class="kw3">getHours</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + <span class="st0">&quot;:&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeToValidString<span class="br0">&#40;</span>currentDate.<span class="kw3">getHours</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + <span class="st0">&quot;:&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeToValidString<span class="br0">&#40;</span>currentDate.<span class="kw3">getMinutes</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + <span class="st0">&quot;:&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeToValidString<span class="br0">&#40;</span>currentDate.<span class="kw3">getSeconds</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + <span class="st0">&quot;.&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeToValidString<span class="br0">&#40;</span>currentDate.<span class="kw3">getMilliseconds</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> + FIELD_SEPERATOR;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> currentTime;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Creates a valid time value</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param &nbsp; number&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;Hour, minute or second</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return &nbsp;string &nbsp; &nbsp; A valid hour, minute or second</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> timeToValidString<span class="br0">&#40;</span>timeValue: <span class="kw3">Number</span><span class="br0">&#41;</span>:<span class="kw3">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> timeValue &gt; <span class="nu0">9</span> ? timeValue.<span class="kw3">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span> : <span class="st0">&quot;0&quot;</span> + timeValue.<span class="kw3">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</phpcode>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2007/06/20/update-part-2-logging-flex-2-and-as3-applications-with-firebug-and-thunderbolt/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Update - Part 1] Logging Flex 2 applications with Firebug and ThunderBolt using the Flex 2 Logging Framework</title>
		<link>http://www.websector.de/blog/2007/06/17/update-part-1-logging-flex-2-applications-with-firebug-and-thunderbolt-using-the-flex-2-logging-framework/</link>
		<comments>http://www.websector.de/blog/2007/06/17/update-part-1-logging-flex-2-applications-with-firebug-and-thunderbolt-using-the-flex-2-logging-framework/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 05:32:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2007/06/17/update-part-1-logging-flex-2-applications-with-firebug-and-thunderbolt-using-the-flex-2-logging-framework/</guid>
		<description><![CDATA[Today I have updated the ThunderBolt AS 3 package for logging Flex 2 applications with Firebug using the Flex 2 Logging Framework. For this reason I have added a common way for using log levels as well &#8211; you&#8217;ll get more information about it on my next blog entry next week . However, ThunderBolt includes [...]]]></description>
			<content:encoded><![CDATA[<p>Today I have updated the <a href="http://code.google.com/p/flash-thunderbolt/">ThunderBolt</a> AS 3 package for logging Flex 2 applications with <a href="http://www.getfirebug.com/">Firebug</a> using the Flex 2 Logging Framework. For this reason I have added a common way for using log levels as well &#8211; you&#8217;ll get more information about it on my next blog entry next week <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
<p>However, ThunderBolt includes now a custom target class called <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/source/org/osflash/thunderbolt/ThunderBoltTarget.as">ThunderBoltTarget</a> extending the Flex 2 <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/AbstractTarget.html">AbstractTarget class</a> for using default behaviors and properties of the Flex 2 Logging Framework such as <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/AbstractTarget.html#filters">filters</a> or common <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/AbstractTarget.html#level">log levels</a>. For more information about custom targets check out the Flex 2 LiveDocs: &#8220;<a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/js/html/wwhelp.htm?href=00001533.html">Using the Logging API</a>&#8220;</p>
<p><span id="more-28"></span></p>
<h2>Example</h2>
<div width="500" height="220">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltTargetExample_1591590871"
			class="flashmovie"
			width="100%"
			height="220">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/06/ThunderBoltTargetExample.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#000000" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/06/ThunderBoltTargetExample.swf"
			name="fm_ThunderBoltTargetExample_1591590871"
			width="100%"
			height="220">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#000000" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<h2>Using ThunderBoltTarget</h2>
<ol>
<li>
<p>Create an instance of ThunderBoltTarget</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span> = <span class="kw2">new</span> ThunderBoltTarget<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>Optionally you can hide the output of time, log levels and category&#8230;</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">_target</span>.<span class="me1">includeTime</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span>.<span class="me1">includeLevel</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span>.<span class="me1">includeCategory</span> = <span class="kw2">false</span>;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>&#8230;or filter the message using wildcards, e.g. only messages for the classes in the de.websector.* package.</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">_target</span>.<span class="me1">filters</span> = <span class="br0">&#91;</span><span class="st0">&quot;de.websector.*&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>Add the ThunderBoltTarget as a custom target for the Flex Log instance</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Log</span>.<span class="me1">addTarget</span><span class="br0">&#40;</span><span class="kw3">_target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>Call the Flex Log instance to send an info message to ThunderBolt. The <em>getLogger()</em> method defines a specified category, which describes an ID for mapping log messages as described above via <em>_target.filters</em></p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="me1">info</span><span class="br0">&#40;</span><span class="st0">&quot;Just an info message.&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>Flex Logging Framework supports logging of multiple objects using flags such as {0}, {1}, etc. Note: The outputs of these objects are only Strings, not a complex hierarchy of all properties and methods.</p>
<phpcode>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="kw3">error</span><span class="br0">&#40;</span><span class="st0">&quot;Calling two objects, a number named myNumber and a array called myArray: {0}, {1}&quot;</span>, myNumber, myArray<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</phpcode></li>
<li>
<p>All code of the example above.</p>
<phpcode>
<div class="codeHeadlineBox">
<p>ThunderBoltTargetExample.mxml ( <a href="http://www.websector.de/blog/wp-content/uploads/2007/06/17/ThunderBoltTargetExample.mxml">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&lt;?<span class="kw3">xml</span> <span class="kw3">version</span>=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span>?&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;mx:Application xmlns:mx=<span class="st0">&quot;http://www.adobe.com/2006/mxml&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; initialize=<span class="st0">&quot;initializeHandler( )&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:Script&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">Logger</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> traceToFirebug<span class="br0">&#40;</span>event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span>&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> myNumber: <span class="kw3">int</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> myString: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> myArray: <span class="kw3">Array</span> = <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>,<span class="br0">&#123;</span>x: <span class="nu0">100</span>, y: <span class="nu0">200</span><span class="br0">&#125;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> label: <span class="kw3">String</span> = event.<span class="kw3">target</span>.<span class="me1">label</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span>label<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;info&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="me1">info</span><span class="br0">&#40;</span><span class="st0">&quot;Just an info message.&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;warn&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="me1">warn</span><span class="br0">&#40;</span><span class="st0">&quot;Here is the value of the String named myString: {0}&quot;</span>, myString<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;error&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="kw3">error</span><span class="br0">&#40;</span><span class="st0">&quot;Calling two objects, a number myNumber and a nested array called myArray: {0}, {1}&quot;</span>, myNumber, myArray<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;debug&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Log</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#41;</span>.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;Just a info message.&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> mx.<span class="me1">logging</span>.<span class="kw3">Log</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">ThunderBoltTarget</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">var</span> <span class="kw3">_target</span>: ThunderBoltTarget;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> initializeHandler<span class="br0">&#40;</span> <span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">_target</span> = <span class="kw2">new</span> ThunderBoltTarget<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; You can disable the time, level or category as follow&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_target.includeTime = false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_target.includeLevel = false;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_target.includeCategory = false;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">_target</span>.<span class="me1">filters</span> = <span class="br0">&#91;</span><span class="st0">&quot;de.websector.playground.ThunderBoltTargetExample&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Log</span>.<span class="me1">addTarget</span><span class="br0">&#40;</span><span class="kw3">_target</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> getFireBug<span class="br0">&#40;</span> <span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;<span class="kw2">var</span> <span class="kw3">url</span>:URLRequest = <span class="kw2">new</span> URLRequest<span class="br0">&#40;</span> <span class="st0">&quot;http://www.getfirebug.com/&quot;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; navigateToURL<span class="br0">&#40;</span> <span class="kw3">url</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/mx:Script&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:Style source=<span class="st0">&quot;css/logger.css&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:<span class="kw3">Text</span> <span class="kw3">htmlText</span>=<span class="st0">&quot;Using ThunderBoltTarget based on the Flex 2.0 Logging Framework&quot;</span>&nbsp; paddingBottom=<span class="st0">&quot;15&quot;</span> /&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:HBox horizontalGap=<span class="st0">&quot;10&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;info&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;infoButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;warn&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;warnButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;error&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;errorButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;&nbsp; &nbsp;&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;debug&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;logButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/mx:HBox&gt;&nbsp;&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:<span class="kw3">Text</span> <span class="kw3">htmlText</span>=<span class="st0">&quot;Press F12 to open Firebug&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; paddingTop=<span class="st0">&quot;15&quot;</span> paddingBottom=<span class="st0">&quot;5&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:LinkButton label=<span class="st0">&quot;(Who the fuck is Firebug?)&quot;</span> id=<span class="st0">&quot;getFirebug&quot;</span> click=<span class="st0">&quot;getFireBug();&quot;</span> /&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/mx:Application&gt;</div>
</li>
</ol>
</div>
</phpcode></li>
</ol>
<h2>Source</h2>
<p>You&#8217;ll find <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/">the latest source</a> of <a href="http://code.google.com/p/flash-thunderbolt/">ThunderBolt</a>, its custom target called <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/source/org/osflash/thunderbolt/ThunderBoltTarget.as">ThunderBoldTarget.as</a> and <a href="http://flash-thunderbolt.googlecode.com/svn/trunk/as3/example/">all examples</a> on Google Code or <a href="http://code.google.com/p/flash-thunderbolt/source">check it out</a> via SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2007/06/17/update-part-1-logging-flex-2-applications-with-firebug-and-thunderbolt-using-the-flex-2-logging-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Logging Flex 2 and AS 3 apps with Firebug and ThunderBolt</title>
		<link>http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/</link>
		<comments>http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/#comments</comments>
		<pubDate>Sat, 21 Apr 2007 08:40:00 +0000</pubDate>
		<dc:creator>sectore</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ThunderBolt]]></category>

		<guid isPermaLink="false">http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/</guid>
		<description><![CDATA[A few weeks ago Martin Kleppe started a project on Google Code called Flash-ThunderBolt. The idea behind based on Manfred Webers blog entry &#8220;Make MTASC talk to Firebug&#8221; which describes a way for logging Flash apps compiled with MTASC using Firebug. I&#8217;ve already joined the Flash-Thunderbolt project for coding an AS3 version. It won&#8217;t be [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago <a href="http://www.ubilabs.net">Martin Kleppe</a> started a project on Google Code called <a href="http://code.google.com/p/flash-thunderbolt/">Flash-ThunderBolt</a>. The idea behind based on <a href="http://manfred.dschini.org/">Manfred Webers</a> blog entry <a href="http://manfred.dschini.org/2007/03/14/make-mtasc-talk-to-firebug/">&#8220;Make MTASC talk to Firebug&#8221;</a> which describes a way for logging Flash apps compiled with MTASC using Firebug. </p>
<p>I&#8217;ve already joined the Flash-Thunderbolt project for coding an AS3 version. It won&#8217;t be a copy of the current AS2 package but rather another approach for using <a href="http://www.getfirebug.com/console.html">Firebugs Console API</a> as simple as possible. Check it out, here are my first steps:</p>
<p><span id="more-27"></span></p>
<h2>Example</h2>
<div width="500" height="200">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ThunderBoltAS3Example_2064553782"
			class="flashmovie"
			width="100%"
			height="200">
	<param name="movie" value="http://www.websector.de/blog/wp-content/uploads/2007/04/ThunderBoltAS3Example.swf" />
	<param name="menu" value="false" />
	<param name="bgcolor" value="#000000" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.websector.de/blog/wp-content/uploads/2007/04/ThunderBoltAS3Example.swf"
			name="fm_ThunderBoltAS3Example_2064553782"
			width="100%"
			height="200">
		<param name="menu" value="false" />
		<param name="bgcolor" value="#000000" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&nbsp;</p>
</div>
<h2>Instructions</h2>
<p>The ThunderBolt AS3 package contains only one class named <em>Logger.as</em>. It supports logging primitive types such as <em>Number</em>, <em>String</em>, <em>Boolean</em>, etc. as well as <em>Objects</em>, <em>Arrays</em> and <em>public properties</em> of all classes. Use short cuts for determing different log levels as <a href="http://osflash.org/zeroi">Zeroi</a> does: &#8220;i&#8221; = info, &#8220;e&#8221; = error, &#8220;w&#8221; = warn, &#8220;d&#8221; = debug.</p>
<p>Here is an example:</p>
<phpcode>
<div class="codeHeadlineBox">
<p>ThunderBoltAS3Example.mxml ( <a href="http://www.websector.de/blog/wp-content/uploads/2007/04/21/ThunderBoltAS3Example.mxml">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1">&lt;?<span class="kw3">xml</span> <span class="kw3">version</span>=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span>?&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;mx:Application xmlns:mx=<span class="st0">&quot;http://www.adobe.com/2006/mxml&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:Script&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span>.<span class="me1">Logger</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> traceToFirebug<span class="br0">&#40;</span>event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> n: <span class="kw3">int</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> s: <span class="kw3">String</span> = <span class="st0">&quot;Lorem ipsum&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> o: <span class="kw3">Object</span> = <span class="br0">&#123;</span>exampleArray: <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>, y: <span class="nu0">10</span>, exampleString: <span class="st0">&quot;Hello&quot;</span>, nestedObject: <span class="br0">&#123;</span>x: <span class="nu0">100</span>, y: <span class="nu0">200</span><span class="br0">&#125;</span><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> a: <span class="kw3">Array</span> = <span class="br0">&#91;</span><span class="st0">&quot;firstValue&quot;</span>,<span class="br0">&#123;</span>x: <span class="nu0">100</span>, y: <span class="nu0">200</span><span class="br0">&#125;</span>, <span class="st0">&quot;secondValue&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> label: <span class="kw3">String</span> = event.<span class="kw3">target</span>.<span class="me1">label</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span>label<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;info&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;i a simple string&quot;</span>, s<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;error&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;i a number typed as int&quot;</span>, n<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;warn&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;e an array with a nested object: &quot;</span>, a<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;debug&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Logger.<span class="kw3">trace</span> <span class="br0">&#40;</span><span class="st0">&quot;w an object with a nested object and nested array&quot;</span>,o<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&nbsp; &nbsp;<span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/mx:Script&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:Style source=<span class="st0">&quot;css/logger.css&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:<span class="kw3">Text</span> <span class="kw3">htmlText</span>=<span class="st0">&quot;Press F12 to open Firebug&quot;</span> paddingBottom=<span class="st0">&quot;20&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;mx:HBox horizontalGap=<span class="st0">&quot;10&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;info&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;infoButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;error&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;errorButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;warn&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;warnButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &lt;mx:<span class="kw3">Button</span> label=<span class="st0">&quot;debug&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; click=<span class="st0">&quot;traceToFirebug(event);&quot;</span> id=<span class="st0">&quot;debugButton&quot;</span> <span class="kw3">width</span>=<span class="st0">&quot;100&quot;</span> <span class="kw3">height</span>=<span class="st0">&quot;50&quot;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/mx:HBox&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/mx:Application&gt;</div>
</li>
</ol>
</div>
</phpcode>
<h2>Source</h2>
<p>First of all: Feel free to check out the <a href="http://code.google.com/p/flash-thunderbolt/source">latest source</a> via SVN <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
<phpcode>
<div class="codeHeadlineBox">
<p>Logger.as ( <a href="http://www.websector.de/blog/wp-content/uploads/2007/04/21/Logger.as">Download code</a> )</p>
</div>
<div class="actionscript" style="font-family: monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* Logging Flex and AS3 projects with Firebug</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @author&nbsp; &nbsp;Jens Krause [www.websector.de]</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @date&nbsp; 04/21/07</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @see&nbsp; http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">* @source&nbsp; &nbsp;http://flash-thunderbolt.googlecode.com/svn/trunk/as3/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1">package org.<span class="me1">osflash</span>.<span class="me1">thunderbolt</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">external</span>.<span class="me1">ExternalInterface</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">describeType</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">getQualifiedClassName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">utils</span>.<span class="me1">getDefinitionByName</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">public</span> <span class="kw2">class</span> Logger</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> const <span class="kw3">LOG</span>: <span class="kw3">String</span> = <span class="st0">&quot;log&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> const INFO: <span class="kw3">String</span> = <span class="st0">&quot;info&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> const WARN: <span class="kw3">String</span> = <span class="st0">&quot;warn&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> const <span class="kw3">ERROR</span>: <span class="kw3">String</span> = <span class="st0">&quot;error&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> const MAX_DEPTH: <span class="kw3">int</span> = <span class="nu0">255</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> depth: <span class="kw3">int</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> logLevel: <span class="kw3">String</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Calls Firebugs command line API to write log information</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;msg&nbsp;&nbsp; log Message</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;obj&nbsp;&nbsp; log object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> <span class="kw3">trace</span> <span class="br0">&#40;</span>msg: <span class="kw3">String</span> = <span class="kw2">null</span>, obj:<span class="kw3">Object</span> = <span class="kw2">null</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; depth = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// log description</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logLevel = <span class="br0">&#40;</span>msg != <span class="kw2">null</span><span class="br0">&#41;</span> ? Logger.<span class="me1">getLogLevel</span><span class="br0">&#40;</span>msg<span class="br0">&#41;</span> : Logger.<span class="kw3">LOG</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> txtMessage: <span class="kw3">String</span> = <span class="br0">&#40;</span>msg != <span class="kw2">null</span> &amp;&amp; msg.<span class="me1">length</span>&gt;= <span class="nu0">3</span><span class="br0">&#41;</span> ? msg.<span class="kw3">slice</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span> : <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> logMsg: <span class="kw3">String</span> = logLevel.<span class="kw3">toUpperCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span> + <span class="st0">&quot;: &quot;</span> + txtMessage;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + logLevel, logMsg<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// log object</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>obj<span class="br0">&#41;</span> Logger.<span class="me1">logProperties</span><span class="br0">&#40;</span>obj<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Logs nested instances and properties</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;logObj&nbsp; log object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;id&nbsp; &nbsp; short description of log object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> logProperties <span class="br0">&#40;</span>logObj: *, id: <span class="kw3">String</span> = <span class="kw2">null</span><span class="br0">&#41;</span>: <span class="kw3">void</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ++ depth;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> propID: <span class="kw3">String</span> = id || <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>depth &lt;Logger.<span class="me1">MAX_DEPTH</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> description:<span class="kw3">XML</span> = describeType<span class="br0">&#40;</span>logObj<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">type</span>: <span class="kw3">String</span> = description.@<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>primitiveType<span class="br0">&#40;</span><span class="kw3">type</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> msg: <span class="kw3">String</span> = <span class="br0">&#40;</span>propID.<span class="kw3">length</span><span class="br0">&#41;</span>&nbsp; &nbsp;?&nbsp; &nbsp; <span class="st0">&quot;[&quot;</span> + <span class="kw3">type</span> + <span class="st0">&quot;] &quot;</span> + propID + <span class="st0">&quot; = &quot;</span> + logObj</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :&nbsp; &nbsp;<span class="st0">&quot;[&quot;</span> + <span class="kw3">type</span> + <span class="st0">&quot;] &quot;</span> + logObj;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + Logger.<span class="kw3">LOG</span>, msg<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">type</span> == <span class="st0">&quot;Object&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.group&quot;</span>, <span class="st0">&quot;[Object] &quot;</span> + propID<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> element: <span class="kw3">String</span> <span class="kw1">in</span> logObj<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;logProperties<span class="br0">&#40;</span>logObj<span class="br0">&#91;</span>element<span class="br0">&#93;</span>, element<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.groupEnd&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">type</span> == <span class="st0">&quot;Array&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.group&quot;</span>, <span class="st0">&quot;[Array] &quot;</span> + propID<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i: <span class="kw3">int</span> = <span class="nu0">0</span>; i &lt;logObj.<span class="kw3">length</span>; i++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;logProperties<span class="br0">&#40;</span>logObj<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.groupEnd&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">list</span>: XMLList = description..<span class="kw3">variable</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">list</span>.<span class="kw3">length</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> each<span class="br0">&#40;</span><span class="kw2">var</span> item: <span class="kw3">XML</span> <span class="kw1">in</span> <span class="kw3">list</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> propItem: <span class="kw3">String</span> = item.@<span class="kw3">name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> typeItem: <span class="kw3">String</span> = item.@<span class="kw3">type</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// var ClassReference: Class = getDefinitionByName(typeItem) as Class;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> valueItem: * = logObj<span class="br0">&#91;</span>propItem<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logProperties<span class="br0">&#40;</span>valueItem, propItem<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logProperties<span class="br0">&#40;</span>logObj, <span class="kw3">type</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;console.&quot;</span> + Logger.<span class="me1">WARN</span>, <span class="st0">&quot;STOP LOGGING: More than &quot;</span> + depth + <span class="st0">&quot; nested objects or properties&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Checking for primitive types</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;type&nbsp; &nbsp; &nbsp; &nbsp; type of object</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return&nbsp; isPrimitiveType&nbsp; isPrimitiveType</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> primitiveType <span class="br0">&#40;</span><span class="kw3">type</span>: <span class="kw3">String</span><span class="br0">&#41;</span>: <span class="kw3">Boolean</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> isPrimitiveType: <span class="kw3">Boolean</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span><span class="kw3">type</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;Boolean&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;void&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;int&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;uint&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;Number&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;String&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;undefined&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;null&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isPrimitiveType = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> isPrimitiveType;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Translates log keys to Firebug log levels,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * which based on zeroi&#8217;s key mapping</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @see&nbsp; http://www.osflash.org/zeroi/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @param&nbsp; &nbsp;msg</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * @return&nbsp; level description</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> getLogLevel <span class="br0">&#40;</span>msg: <span class="kw3">String</span><span class="br0">&#41;</span>: <span class="kw3">String</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> firstChar: <span class="kw3">String</span> = <span class="br0">&#40;</span>msg.<span class="kw3">charAt</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> == <span class="st0">&quot; &quot;</span><span class="br0">&#41;</span> ? msg.<span class="kw3">charAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>.<span class="kw3">toLowerCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span> : <span class="st0">&quot;d&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">level</span>: <span class="kw3">String</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span>firstChar<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;i&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="me1">INFO</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;w&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="me1">WARN</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;e&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">ERROR</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;d&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">LOG</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">level</span> = Logger.<span class="kw3">LOG</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">level</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</phpcode>
<h2>Feedback</h2>
<p>Feedback and suggestions for improvement are welcome <img src='http://www.websector.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  If you&#8217;d like to join the <a href="http://code.google.com/p/flash-thunderbolt/">Flash-ThunderBolt project</a> just drop <a href="mailto:sectore@gmail.com">me an email</a> or feel free to post a comment.</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.websector.de/blog/2007/04/21/logging-flex-2-and-as-3-apps-with-firebug-and-thunderbolt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
