Hi, guys.<br><br>I&#39;m polishing up jclouds for release.  I&#39;d like some feedback on logging, especially as relates to integration with other libraries.  In this case, I&#39;m referring to wire logging, where we trace the inputs and outputs to the cloud service into a separate log file.  Wire logging is extremely important when troubleshooting with cloud
vendors, as they can read the stacks without knowing java. Wire logging is course optional, and removes redundant content logging from other parts of the code.   <br><br>The design is largely borrowed from apache hc wire logging.  It differs in implementation, where we make it asynchronous and portable across http engines.  In other words, java, nio, and whatever engines we come up with next will have identical output like below [1]. This specific logging is controlled by categories jclouds.http.headers (for headers) and jclouds.http.wire (for content).  Note that these are not org.jclouds categories on purpose, so as to avoid accidentally turning them on with wildcards.<br>
<br>Please let me know what you think.<br><br>Cheers,<br>-Adrian<br><br>[1]<br>2009-10-10 00:44:37,566 DEBUG [jclouds.http.headers] (pool-1-thread-2) &gt;&gt; POST <a href="https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=40Z0PFwy%7EGAr1UJLbfu%7E-FVSVvit%7E8jMak3CrLV%7EojZnQoyOMqjG41UXtQ&amp;destFolde">https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=40Z0PFwy%7EGAr1UJLbfu%7E-FVSVvit%7E8jMak3CrLV%7EojZnQoyOMqjG41UXtQ&amp;destFolde</a><br>
rPath=container&amp;sessionToken=61b0ca55-3782-44f8-bdf1-177a9d118d28 HTTP/1.1<br>2009-10-10 00:44:37,566 DEBUG [jclouds.http.headers] (pool-1-thread-2) &gt;&gt; Content-Length: 141<br>2009-10-10 00:44:37,566 DEBUG [jclouds.http.headers] (pool-1-thread-2) &gt;&gt; Content-Type: multipart/form-data; boundary=--JCLOUDS--<br>
2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;----JCLOUDS--[\r][\n]&quot;<br>2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;Content-Disposition: form-data; name=&quot;key&quot;; filename=&quot;key&quot;[\r][\n]&quot;<br>
2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;Content-Type: application/octet-stream[\r][\n]&quot;<br>2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;[\r][\n]&quot;<br>
2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;value[\r][\n]&quot;<br>2009-10-10 00:44:37,751 DEBUG [jclouds.http.wire] (pool-1-thread-1) &gt;&gt; &quot;----JCLOUDS----[\r][\n]&quot;<br>
2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; HTTP/1.1 200 OK<br>2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Content-Length: 152<br>2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; X-Powered-By: Nirvanix SDN<br>
2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; X-Powered-By: <a href="http://ASP.NET">ASP.NET</a><br>2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Expires: -1<br>
2009-10-10 00:44:37,926 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; X-AspNet-Version: 2.0.50727<br>2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Date: Sat, 10 Oct 2009 07:46:25 GMT<br>
2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Pragma: no-cache<br>2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Content-Type: text/xml; charset=utf-8<br>
2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Server: Nirvanix IMFS<br>2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Server: Microsoft-IIS/6.0<br>2009-10-10 00:44:37,927 DEBUG [jclouds.http.headers] (pool-1-thread-2) &lt;&lt; Cache-Control: no-cache<br>
<br>