Here&#39;s more food for thought.  Is the following appropriate depth for debug logging?  One nice thing you see here is how clearly the non-blocking I/O is working by virtue of thread names:<br><br>Cheers,<br>-Adrian<br><br>
2009-10-10 10:43:07,025 DEBUG [org.jclouds.rest.internal.RestClientProxy] (main) Converted SDNConnection.upload to POST <a href="https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=K1M5rNkJ%7EFadhqAleNG%7EBrlTx6Hn%7E">https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=K1M5rNkJ%7EFadhqAleNG%7EBrlTx6Hn%7E</a><br>
PsCrPeDiVt%7ETaubT1QF7aJ9hKFF_Q&amp;destFolderPath=container HTTP/1.1<br>2009-10-10 10:43:07,029 DEBUG [org.jclouds.rest.internal.RestClientProxy] (main) Invoking upload<br>2009-10-10 10:43:07,213 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (pool-1-thread-1) Starting NioHttpCommandConnectionPool [ target=<a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a>, endPoint=<a href="https://node1">https://node1</a>.<br>
<a href="http://nirvanix.com">nirvanix.com</a>, hashCode=333232100 ]<br>2009-10-10 10:43:07,431 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 18) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,431 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 17) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,431 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 23) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,432 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 19) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,432 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 13) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,432 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 20) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,432 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 16) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,432 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 22) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,433 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 15) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,433 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 14) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,433 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 24) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>
2009-10-10 10:43:07,433 INFO  [org.jclouds.http.httpnio.pool.NioHttpCommandConnectionPool] (I/O dispatcher 21) Opened: <a href="http://node1.nirvanix.com/206.251.254.17:443">node1.nirvanix.com/206.251.254.17:443</a><br>2009-10-10 10:43:07,719 DEBUG [org.jclouds.http.httpnio.pool.NioHttpCommandExecutionHandler] (I/O dispatcher 18) Sending request: POST <a href="https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=K1M5rNkJ%7EFadhqAleN">https://node1.nirvanix.com/Upload.ashx?output=json&amp;uploadToken=K1M5rNkJ%7EFadhqAleN</a><br>
G%7EBrlTx6Hn%7EPsCrPeDiVt%7ETaubT1QF7aJ9hKFF_Q&amp;destFolderPath=container&amp;sessionToken=95015e5e-2d47-471d-acd9-13115c4d51e3 HTTP/1.1<br>2009-10-10 10:43:07,871 DEBUG [org.jclouds.http.httpnio.pool.NioHttpCommandExecutionHandler] (I/O dispatcher 18) Receiving response: HTTP/1.1 200 OK<br>
2009-10-10 10:43:07,877 DEBUG [org.jclouds.http.functions.ReturnVoidIf2xx] (pool-1-thread-2) Processing intermediate result for: org.jclouds.http.HttpResponse@fa425c<br>2009-10-10 10:43:07,878 DEBUG [org.jclouds.http.functions.ReturnVoidIf2xx] (pool-1-thread-2) Processed intermediate result for: org.jclouds.http.HttpResponse@fa425c<br>
<br><br><br><br><div class="gmail_quote">On Sat, Oct 10, 2009 at 1:02 AM, Adrian Cole <span dir="ltr">&lt;<a href="mailto:adrian.f.cole@gmail.com">adrian.f.cole@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
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" target="_blank">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" target="_blank">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>
</blockquote></div><br>